Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.226 Beiträge
 
Delphi 12 Athens
 
#7

AW: IsProcess funktioniert unter Delphi 2010 nicht mehr!

  Alt 21. Jul 2010, 13:00
Ich würde mal mkinzlers Beitrag 4 zustimmen.
vorallem wenn man eingene Deklarationen/Implementationen von etwas verwendet, dann sollte man schonmal aufpassen, daß auch die Richtigen APIs implentiert werden und dieses auch noch richtig, damit der Compiler notfalls auch mal Fehlermeldungen bezüglich AnsiChar<>Char<>WideChar ausgeben kann (gibt unterschiedliche APIs für Ansi und Unicode)

Delphi-Quellcode:
function ProcessIsRunning(ExeName: string): Boolean;
(*
** This routine examines Windows processes currently running to see if a
** certain program is running.
**
** sExe  : The executable name of the program to check.
** Result: True if the program is running, False otherwise.
*)

var
  liI, lSnapShot: Longint;
  rProcess : TProcessEntry32;
begin
  Result := False;
  ExeName := ExtractFileName(ExeName);
  lSnapShot := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
  if lSnapShot <> 0 then
    try
      rProcess.dwSize := SizeOf(rProcess);
      if Process32First(lSnapShot, rProcess) then
        repeat
          if AnsiSameText(ExeName, rProcess.szExeFile) then begin
            Result := True;
            Exit;
          end;
        until not Process32Next(lSnapShot, rProcess);
    finally
      CloseHandle(lSnapShot);
    end;
end;
PS: Nur den Dateinamen zu prüfen ist nicht nicht sicher, da man auch gleichnamige Programme aus unterschiedlichen Verzeichnis starten kann,
oder versuch es inkl. der kompletten Pfade:

Was willst du denn damit erreichen?
eventuell ist Hier im Forum suchenOneInstance (und was es sonst noch dazu im Forum zu finden gibt) was Passenderes.
$2B or not $2B

Geändert von himitsu (21. Jul 2010 um 13:06 Uhr)
  Mit Zitat antworten Zitat