Poniższa funkcja sprawdza czy dany proces jest uruchomiony.
Do sekcji uses należy dodać muduły SysUtils oraz TlHelp32:
function ProcessExists(ExeFileName : string) : boolean;
var
ContinueLoop : BOOL;
FSnapshotHandle : THandle;
FProcessEntry32 : TProcessEntry32;
begin
FSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
FProcessEntry32.dwSize := SizeOf(FProcessEntry32);
ContinueLoop := Process32First(FSnapshotHandle, FProcessEntry32);
Result := False;
while Integer(ContinueLoop) <> 0 do
begin
if ((AnsiUpperCase(ExtractFileName(FProcessEntry32.szExeFile)) =
AnsiUpperCase(ExeFileName)) or (AnsiUpperCase(FProcessEntry32.szExeFile) =
AnsiUpperCase(ExeFileName))) then
begin
Result := True;
end;
ContinueLoop := Process32Next(FSnapshotHandle, FProcessEntry32);
end;
CloseHandle(FSnapshotHandle);
end;
Sprawdzaj w wątku lub Timerze. A jak funkcja zwróci False to zamknij swój program albo rób co tam chcesz.