Einzelnen Beitrag anzeigen

creehawk

Registriert seit: 1. Jul 2013
Ort: Hamburg
233 Beiträge
 
Delphi 10.4 Sydney
 
#1

Laufende Prozesse abfragen - geht, geht nicht

  Alt 9. Jan 2018, 10:32
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
  Mit Zitat antworten Zitat