如果一个程序从未被运行过,那么它是不可能对注册表有所 *** 作的,所以我们可以在程序运行是就检测一次注册表中某个值是否存在,如果不存在就给出提示 *** 作。当然一旦程序被运行,首先是要检测那个值是否存在,而接着就必须要向某个你指定的位置写值,不然每消唯次都检测到程序是第一次运行,显然是不合理的。至于按钮是否第一次被按下,也是返猛同理的。
你可以用:
regopenkeyex()打开注册表(对注册表 *** 作之前必须先打开它)
regqueryvalueex()检测注册表中指定的值是否存在
regsetvalueex()对指定位置写值
regdeletekey()删除注册表的值或项
这些函数上百度百科看它们的用法,很详细!
vc如何判断一个程式是否在执行?InstanceName 自定义用于表示应用程式的唯一标识名
hWndClassName 窗体的注册类名 CreateWindow 函式中指定
hWndWinName 窗体名 CreateWindow 函式中指定
mOperate *** 作判断变数
BOOL OperateMutex( LPCWSTR InstanceName,LPCWSTR hWndClassName, LPCWSTR hWndWinName, BOOL mOperate)
{
HANDLE hMutex
hMutex = OpenMutex(MUTEX_ALL_ACCESS,FALSE,InstanceName)
switch(mOperate)
{
case APP_OPEN: OPEN = 启动程式
if(hMutex==NULL)
{
hMutex = CreateMutex(NULL,FALSE,InstanceName)
if( (hMutex == NULL) || (GetLastError()==ERROR_ALREADY_EXISTS))
{
ActiveOldApp(hWndClassName,hWndWinName)
return FALSE程式已经启动或有错误发生
}
else
{
return TRUE
} 第一次启动程式
}
else
{
ActiveOldApp(hWndClassName,hWndWinName)
return FALSE程式已经启动
}
break
case APP_CLOSE: CLOSE = 退出升亏程式
ReleaseMutex(hMutex)
CloseHandle(hMutex)
break
}
return TRUE
}
启用已启动的同一个程式
引数:hWndClassName 窗体的注册类名 CreateWindow 函式中指定
hWndWinName 窗体名 CreateWindow 函式中指定
BOOL ActiveOldApp( LPCWSTR hWndClassName, LPCWSTR hWndWinName)
{
HWND hWndApp,hWndPopup
if (hWndApp = FindWindow(hWndClassName,hWndWinName))
{
PutLog( "已经闹启启动的例项的视窗控制代码是%ld", hWndApp )
SendMessage( hWndApp, WM_ACTIVE, 0, 0 )
hWndPopup = GetLastActivePopup(hWndApp)
PutLog( "GetLastActivePopup得到的视窗控制代码是%ld", hWndPopup )
return TRUE
}
else
{
return FALSE
}
}
DELPHI如何判断一个程式是否正在执行吵弯神查询程序,假设档名为:a.exe,你可以查询它,如找到,说明在运行了
网上很多查询程序的资料
如何判断是否一个程式在执行这个问题比较普遍,有多种不同的解决方法。 比较常用的,就是在B程式中新增Log档案机制,随时记录B程式的执行状态,或者只记录B程式捕捉到的异常,A程式需要检视B程式执行状态的时候就读取B的log档案,进行分析。
如何判断某个程式是否在执行这个问题比较普遍,有多种不同的解决方法。 比较常用的,
就是在B程式中新增Log档案机制,随时记录B程式的执行状态,
或者只记录B程式捕捉到的异常
VB中 如何判断程式是否在执行??Private Declare Function OpenProcess Lib "kernel32.dll" (ByVal dwDesiredAess As Long, ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32.dll" (ByVal hProcess As Long, ByRef lpExitCode As Long) As Long
Private Declare Sub Sleep Lib "kernel32.dll" (ByVal dwMilliseconds As Long)
Private Const PROCESS_QUERY_INFORMATION As Long = (&H400)
Private Const STILL_ACTIVE As Long = &H103
Public hShell As Long, hProc As Long, lExit As Long
Private Sub Command1_Click()
hProc = OpenProcess(PROCESS_QUERY_INFORMATION, False, hShell)
GetExitCodeProcess hProc, lExit
If lExit = STILL_ACTIVE Then
MsgBox "程式正在执行"
Else
hShell = Shell("cmd.exe")
End If
End Sub
VC如何判断一个程式是否首次执行或一个程式的按钮是否首次点选?
一般通过登录档实现吧,不过也可以通过配置档案实现。现在教你通过登录档实现:
如果一个程式从未被执行过,那么它是不可能对登录档有所 *** 作的,所以我们可以在程式执行是就检测一次登录档中某个值是否存在,如果不存在就给出提示 *** 作。当然一旦程式被执行,首先是要检测那个值是否存在,而接着就必须要向某个你指定的位置写值,不然每次都检测到程式是第一次执行,显然是不合理的。至于按钮是否第一次被按下,也是同理的。
你可以用:
RegOpenKeyEx()开启登录档(对登录档 *** 作之前必须先开启它)
RegQueryValueEx()检测登录档中指定的值是否存在
RegSetValueEx()对指定位置写值
RegDeleteKey()删除登录档的值或项
这些函式上百度百科看它们的用法,很详细!
如何判断一个程式是否已执行,不要用FINDWINDOW我用win系统变数解决program Project1uses Forms, Windows, Dialogs, Unit1 in 'Unit1.pas' {Form1}{$R *.res}var vATOM: ATOMconst ATOMID = 'Zswang方法'begin if GlobalFindAtom(ATOMID) >0 then begin ShowMessage(ATOMID)ExitendvATOM := GlobalAddAtom(ATOMID)try Application.InitializeApplication.CreateForm(TForm1, Form1)Application.Runfinally GlobalDeleteAtom(vATOM)endend. 检视原帖>>
cmd如何判断程式是否执行?cmd是 mand的缩写.即 命令提示符(CMD),是在OS / 2 , Windows CE与Windows NT平台为基础的作业系统(包括Windows 2000和XP中, Vista中,和Server 2003 )下的“MS-DOS 方式”。中文版Windows XP 中的命令提示符进一步提高了与DOS 下 *** 作命令的相容性,使用者可以在命令提示符直接输入中文呼叫档案。
asklist >a.txt<回车>type a.txt | find /i "%程序名%" &&goto b<回车>第一句是将当前程序储存到档案,第二句是检测程序是否执行,是否跳转到B处执行。
tasklist /nh>d:\1.txt find /i "QQ.exe" d:\1.txt if ERRORLEVEL 1 ("C:\sofare\Tencent\qq\QQQ.exe" ) else (exit) 意思是检测"QQ.EXE"有没有在程序里,大家都知道QQ开启后进程名是"QQ.EXE"如果有在程序里则执行"EXIT"退出,如果没有在程序里,说明QQ没有开启,则执行QQ程式"C:\sofare\Tencent\qq\QQQ.exe" 第二种写法 tasklist /nh|find /i "QQ.exe" if ERRORLEVEL 1 ("C:\sofare\Tencent\qq\QQQ.exe") else (exit)
如何使用VC来检测系统上的.NetFrameWork版本呢,原理见我前面刚刚写过,不懂的可以去看一下,下面直接贴代码了,百度呀,为什么没有贴代码的功能呢,哎直接贴真恶心呀,那就恶心一下吧。#include “stdio.h”
#include “windows.h”
#include “tchar.h”
#include “strsafe.h”
#include “stdafx.h”
// 为避免机器编译时候出现:SDK中某些值没有被定义的情况,先定义他们。
#ifndef SM_TABLETPC
#define SM_TABLETPC86
#endif
#ifndef SM_MEDIACENTER
#define SM_MEDIACENTER 87
#endif
// 用于检测注册表项的名称和值名称的常量
const TCHAR *g_szNetfx10RegKeyName = _T(“Software\\Microsoft\\.NETFramework\\Policy\\v1.0″)
const TCHAR *g_szNetfx10RegKeyValue = _T(“3705″)
const TCHAR *g_szNetfx10SPxMSIRegKeyName = _T(“Software\\Microsoft\\Active Setup\\Installed Components\\{78705f0d-e8db-4b2d-8193-982bdda15ecd}”)
const TCHAR *g_szNetfx10SPxOCMRegKeyName = _T(“Software\\Microsoft\\消宽Active Setup\\Installed Components\\{FDC11A6F-17D1-48f9-9EA3-9051954BAA24}”)
const TCHAR *g_szNetfx11RegKeyName = _T(“Software\\Microsoft\\NET Framework Setup\\NDP\\v1.1.4322″)
const TCHAR *g_szNetfx20RegKeyName = _T(“Software\\Microsoft\\NET Framework Setup\\NDP\\v2.0.50727″)
const TCHAR *g_szNetfx30RegKeyName = _T(“Software\\Microsoft\\NET Framework Setup\\NDP\\拿顷亮v3.0\\Setup”)
const TCHAR *g_szNetfx30SpRegKeyName = _T(“Software\\Microsoft\\NET Framework Setup\\NDP\\v3.0″)
const TCHAR *g_szNetfx30RegValueName = _T(“InstallSuccess”)
const TCHAR *g_szNetfx35RegKeyName = _T(“Software\\Microsoft\\NET Framework Setup\\NDP\\v3.5″)
const TCHAR *g_szNetfxStandardRegValueName = _T(“Install”)
const TCHAR *g_szNetfxStandardSPxRegValueName = _T(“SP”)
const TCHAR *g_szNetfxStandardVersionRegValueName = _T(“Version”)
// .NET Framework 3.0最终版本的版本乎陪信息
const int g_iNetfx30VersionMajor = 3
const int g_iNetfx30VersionMinor = 0
const int g_iNetfx30VersionBuild = 4506
const int g_iNetfx30VersionRevision = 26
// .NET Framework 3.5最终版本的版本信息
const int g_iNetfx35VersionMajor = 3
const int g_iNetfx35VersionMinor = 5
const int g_iNetfx35VersionBuild = 21022
const int g_iNetfx35VersionRevision = 8
// 函数原型声明
bool CheckNetfxBuildNumber(const TCHAR*, const TCHAR*, const int, const int, const int, const int)
int GetNetfx10SPLevel()
int GetNetfxSPLevel(const TCHAR*, const TCHAR*)
bool IsCurrentOSTabletMedCenter()
bool IsNetfx10Installed()
bool IsNetfx11Installed()
bool IsNetfx20Installed()
bool IsNetfx30Installed()
bool IsNetfx35Installed()
bool RegistryGetValue(HKEY, const TCHAR*, const TCHAR*, DWORD, LPBYTE, DWORD)
/******************************************************************
Function Name: 判断.NET Framework 1.0是否安装
Description:Uses the detection method recommended at
[url]http://msdn.microsoft.com/library/ms994349.aspx[/url]
to determine whether the .NET Framework 1.0 is
installed on the machine
Inputs:NONE
Results:.NET Framework 1.0已安装返回TRUE否则返回FALSE
******************************************************************/
bool IsNetfx10Installed()
{
TCHAR szRegValue[MAX_PATH]
return (RegistryGetValue(HKEY_LOCAL_MACHINE, g_szNetfx10RegKeyName, g_szNetfx10RegKeyValue, NULL, (LPBYTE)szRegValue, MAX_PATH))
}
/******************************************************************
Function Name: 判断.NET Framework 1.1是否安装
Description:Uses the detection method recommended at
[url]http://msdn.microsoft.com/library/ms994339.aspx[/url]
to determine whether the .NET Framework 1.1 is
installed on the machine
Inputs:NONE
Results:.NET Framework 1.1已安装返回TRUE否则返回FALSE
******************************************************************/
bool IsNetfx11Installed()
{
bool bRetValue = false
DWORD dwRegValue=0
if (RegistryGetValue(HKEY_LOCAL_MACHINE, g_szNetfx11RegKeyName, g_szNetfxStandardRegValueName, NULL, (LPBYTE)&dwRegValue, sizeof(DWORD)))
{
if (1 == dwRegValue)
bRetValue = true
}
return bRetValue
}
/******************************************************************
Function Name: 判断.NET Framework 2.0是否安装
Description:Uses the detection method recommended at
[url]http://msdn.microsoft.com/library/aa480243.aspx[/url]
to determine whether the .NET Framework 2.0 is
installed on the machine
Inputs:NONE
Results:.NET Framework 2.0已安装返回TRUE否则返回FALSE
******************************************************************/
bool IsNetfx20Installed()
{
bool bRetValue = false
DWORD dwRegValue=0
if (RegistryGetValue(HKEY_LOCAL_MACHINE, g_szNetfx20RegKeyName, g_szNetfxStandardRegValueName, NULL, (LPBYTE)&dwRegValue, sizeof(DWORD)))
{
if (1 == dwRegValue)
bRetValue = true
}
return bRetValue
}
/******************************************************************
Function Name: 判断.NET Framework 3.0是否安装
Description:Uses the detection method recommended at
[url]http://msdn.microsoft.com/library/aa964979.aspx[/url]
to determine whether the .NET Framework 3.0 is
installed on the machine
Inputs:NONE
Results:.NET Framework 3.0已安装返回TRUE否则返回FALSE
******************************************************************/
bool IsNetfx30Installed()
{
bool bRetValue = false
DWORD dwRegValue=0
// 检查InstallSuccess注册表值存在,等于1
if (RegistryGetValue(HKEY_LOCAL_MACHINE, g_szNetfx30RegKeyName, g_szNetfx30RegValueName, NULL, (LPBYTE)&dwRegValue, sizeof(DWORD)))
{
if (1 == dwRegValue)
bRetValue = true
}
//补充核查,检查版本列出的版本号在注册表中,是否已有预发布版的 .NET Framework 3.0 InstallSuccess值。
return (bRetValue &&CheckNetfxBuildNumber(g_szNetfx30RegKeyName, g_szNetfxStandardVersionRegValueName, g_iNetfx30VersionMajor, g_iNetfx30VersionMinor, g_iNetfx30VersionBuild, g_iNetfx30VersionRevision))
}
/******************************************************************
Function Name: 判断.NET Framework 3.5是否安装
Description:Uses the detection method recommended at
[url]http://msdn.microsoft.com/library/cc160716.aspx[/url]
to determine whether the .NET Framework 3.5 is
installed on the machine
Inputs:NONE
Results:.NET Framework 3.5已安装返回TRUE否则返回FALSE
******************************************************************/
bool IsNetfx35Installed()
{
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)