P
panzichan
Unregistered / Unconfirmed
GUEST, unregistred user!
对于防止例程运行多个实例,我们一般采用如下办法:<br>var<br> hmutex:HWnd;<br> IntRet:integer;<br>begin<br> Application.Initialize;<br> hmutex:=CreateMutex(nil,false,pchar('MsChost'));<br> IntRet:=GetLastError;<br> if IntRet<>ERROR_ALREADY_EXISTS then<br> begin<br> Application.CreateForm(TForm1, Form1);<br> Application.Run;<br> end<br> else<br> ReleaseMutex(hmutex);<br>end.<br> <br> 而对于判断某程序是否运行,我们一般用以下方法:<br>1.用getmodulefilenameex(openprocess(PROCESS_QUERY_INFORMATION OR PROCESS_VM_READ<br> ,FALSE,PROCESSSTRUCT.th32ProcessID),0,<br> @MODNAME[0],sizeof(modname))<br> 函数来查找进程返回的文件路径名,是否符合条件.<br>2.或者用函数GetExitCodeProcess(FAppHandle, FAppState);判断<br><br> 对于以上判断某程序是否运行两方法我都觉得繁琐,是否有API函数在程序中求出由<br>CreateMutex(nil,false,pchar('MsChost'));建立的互斥对像'MsChost',这样我们就可<br>知存在'MsChost',从而判断含有'MsChost'的程序已运行,是否有这样的函数?<br>请各位大虾多多指教....<br>