Einzelnen Beitrag anzeigen

rantanplan99
(Gast)

n/a Beiträge
 
#1

Re: Prüfen, ob eine Anwendung läuft

  Alt 30. Jul 2004, 08:59
Ich hätte da ein paar Fragen bzw. Anmerkungen zu deinem Code

Delphi-Quellcode:
function GetProcessID(Exename: string): DWORD;
var
  hProcSnap: THandle;
  pe32: TProcessEntry32;
begin
  result := 0;
  hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
  if hProcSnap <> INVALID_HANDLE_VALUE then
  begin
    pe32.dwSize := SizeOf(ProcessEntry32);
    if Process32First(hProcSnap, pe32) = true then
    begin
      while Process32Next(hProcSnap, pe32) = true do // <--- Hier (1)
      begin
        if pos(Exename, pe32.szExeFile) <> 0 then // <--- Hier (2)
          result := pe32.th32ProcessID;
      end;
    end;
    CloseHandle(hProcSnap);
  end;
end;

...
zu (1): überspringst du bei der While-Schleife nicht den ersten Eintrag der mit Process32First gefunden wurde? Beim Aufruf von Process32Next, müsste doch der Wert den dir Process32First geliefert hat gleich wieder verloren gehen, oder?
Ok, ich hab die Hilfe für die 2 Funktionen noch nicht gelesen, aber sieht verdächtig aus.

zu (2): wäre es nicht sicherer die Strings in pos vorher in Upper/LowerCase umzuwandeln? weil so ist es ein Unterschied ob du nach 'notepad.exe' oder 'NoTePaD.eXe' suchst, oder?

Ich habe deinen Source nicht ausprobiert, falls alles so funktioniert ... sorry für die Anmerkungen, und Schande über mich.
  Mit Zitat antworten Zitat