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)
你自己的程序里加个dll,处理dll_process_attach,有新进程启动时会回调你这个dllmain,就可以检查启动的这个程序是不是你要禁止的程序,如果是killprocess..检查新程序你可以枚举系统中的进程,或者用getmoudlehandle
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)