| Код | uses PsAPI;
Function FindProcess(ExeName:string):string; var PIDArray : array [0..1023] of DWORD; cb : DWORD; I : Integer; ProcCount : Integer; hMod : HMODULE; hProcess : THandle; ModuleName : array [0..1024] of Char; begin Result := ''; EnumProcesses(@PIDArray, SizeOf(PIDArray), cb); ProcCount := cb div SizeOf(DWORD); for I := 0 to ProcCount - 1 do begin hProcess := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_VM_READ,False,PIDArray[I]); if (hProcess <> 0) then begin EnumProcessModules(hProcess, @hMod, SizeOf(hMod), cb); GetModuleFilenameEx(hProcess, hMod, ModuleName, SizeOf(ModuleName)); if UpperCase(ExtractFileName(ModuleName))=UpperCase(ExeName) then Result:=ModuleName; end; CloseHandle(hProcess); end end;
|
Если prog.exe запущен, то FindProcess('prog.exe') возвращает полный путь к prog.exe, иначе - ''. Просто проверяй по таймеру, если FindProcess возвратит не '', то программа запущена. |