Moin Moin.
Bei der Installation von Spieldateien muss ich vor dieser Installation prüfen, ob das dazugehörige Spiel läuft. Dazu verwende ich die nachstehende Prozedur um die laufenden Prozesse aufzulisten.
Delphi-Quellcode:
uses TlHelp32;
procedure GetProcessList(const aProcessList: TStrings);
var
Snap: THandle;
ProcessE: TProcessEntry32;
begin
aProcessList.Clear;
Snap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
try
ProcessE.dwSize := SizeOf(ProcessE);
if Process32First(Snap, ProcessE) then
Repeat
aProcessList.Add(ProcessE.szExeFile);
Until not Process32Next(Snap, ProcessE)
else
RaiseLastOSError;
finally
CloseHandle(Snap);
end;
end;
... und die folgende schlichte Abfrage um dann eben festzstellen, ob oder ob nicht.
Delphi-Quellcode:
Prozesse:=TStringlist.Create;
GetProcessList(Prozesse);
For I:= 0 to Prozesse.Count - 1 do
begin
If Prozesse.Strings[I] = ExeNameString then IsActive := 1;
end;
Die Liste wird anstandslos erstellt und enthält auch - wenn das Spiel denn läuft - den Namen der laufenden Exedatei.
Tja. Mal geht es, mal geht es nicht. 'Emperor.exe' geht nicht, 'CaesarIV.exe' geht - mal als Beispiel.
Was kann das sein?
creehawk