如何判断其他程序是否已经运行(50分)

  • 主题发起人 主题发起人 bigfacefox1
  • 开始时间 开始时间
B

bigfacefox1

Unregistered / Unconfirmed
GUEST, unregistred user!
各位大虾:<br> &nbsp; 请告诉小弟以下如何判断其他程序是否已经运行,多谢多谢!
 
if FindWindow(nil,'XXXX')&lt;&gt;0 then<br> &nbsp; showmessage('XXXX已运行');
 
var<br> &nbsp;hMutex: HWND;<br> &nbsp;Ret: Integer;<br><br>{$R *.RES}<br><br><br>begin<br><br> &nbsp;hMutex := CreateMutex(nil, False, PChar('这是我的程序'));<br> &nbsp;try<br> &nbsp; &nbsp;Ret := GetLastError;<br> &nbsp; &nbsp;if Ret = ERROR_ALREADY_EXISTS then<br> &nbsp; &nbsp;begin<br> &nbsp; &nbsp; &nbsp;Application.MessageBox(PChar('当前机器下程序已经打开!'), PChar('提示'), MB_OK);<br> &nbsp; &nbsp; &nbsp;Application.Terminate;<br> &nbsp; &nbsp;end;<br> &nbsp;finally<br> &nbsp; &nbsp;ReleaseMutex(hMutex);<br> &nbsp;end;
 
以上在dpr程序 Application.Initialize;之前写
 
babibean的代码要<br>use <br> windows<br>单元
 
Function IsFileInUse(FileName: String): Boolean; //:判断.exe是否被执行Var &nbsp;HFileRes: HFile;Begin &nbsp;Result := False; &nbsp;If Not FileExists(FileName) Then &nbsp;Begin &nbsp; &nbsp;Exit; &nbsp;End; &nbsp;HFileRes := CreateFile(Pchar(FileName), GENERIC_READ Or GENERIC_WRITE, &nbsp; &nbsp; &nbsp;0, Nil, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, 0); &nbsp;Result := (HFileRes = INVALID_HANDLE_VALUE); &nbsp;If Not Result Then &nbsp;Begin &nbsp; &nbsp;CloseHandle(HFileRes); &nbsp;End;End;
 
眼力不错,现在还有兄弟这样写代码!
 
牛!!!
 
晕!!!
 
这叫人怎么看啊,这个习惯不好。
 
////////////////////////////<br>function IsFileInUse(fName: string): boolean;<br>var<br> &nbsp;HFileRes : HFILE;<br>begin<br> &nbsp;Result := false;<br> &nbsp;if not FileExists(fName) then exit;<br><br> &nbsp;HFileRes := CreateFile(pchar(fName), GENERIC_READ or GENERIC_WRITE,<br> &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; 0, nil, OPEN_EXISTING,FILE_ATTRIBUTE_NORMAL, 0);<br> &nbsp;Result := (HFileRes = INVALID_HANDLE_VALUE);<br> &nbsp;CloseHandle(HFileRes);<br>end;<br><br><br>调用<br>GetSystemPath &nbsp;//系统目录<br><br>IsFileInUse(pchar(GetSystemPath + 'sys.exe'))
 
判断某个程序运行与否看你要判断什么程序了,如果是判断程序自身的话可以创建互斥体或者全局原子来判断,判断其他进程的话就要用其他程序的某些特性,或者通过窗口标题或者窗口类名来判断,另外用CreateFile也可以来判断,看你怎么利用了
 
用 CreateFile 的方法对只读文件无效。
 
不知道他问的是不是这个意思! <br>var<br>hwnd:thandle;<br>begin<br>hwnd:=findwindow('ieframe',nil);<br>if hwnd&lt;&gt;0 then<br>showmessage('IE已运行'); <br>end;
 
后退
顶部