Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Frage zum Source: läuft Anwendung? (https://www.delphipraxis.net/27374-frage-zum-source-laeuft-anwendung.html)

rantanplan99 30. Jul 2004 07:59


Re: Prüfen, ob eine Anwendung läuft
 
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. :wink:

mirage228 30. Jul 2004 08:12

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

Zitat von rantanplan99
Ich hätte da ein paar Fragen bzw. Anmerkungen zu deinem Code

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?

Hoi,

Groß/Kleinschreibung wird von Pos() nicht berücksichtigt, also ist das schon so O.K. ;)

mfG
mirage228

Luckie 30. Jul 2004 10:59

Re: Prüfen, ob eine Anwendung läuft
 
Zu eins: Stimmt, den Überspringe ich. Das macht aber nichts, da der erste Prozess der Leerlauf ist. Die Routine kommt aus einem Programm, wo ich den Leerlaufprozess nicht brauchen konnte.

sakura 30. Jul 2004 11:05

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

Zitat von mirage228
Groß/Kleinschreibung wird von Pos() nicht berücksichtigt, also ist das schon so O.K. ;)

:gruebel: Groß-/Kleinschreibung macht schon einen Unterschied. So wird zum Beispiel der Text 'Hilfe' im Wort 'Delphihilfe' durch Pos nicht gefunden.

...:cat:...

Steve 30. Jul 2004 11:34

Re: Prüfen, ob eine Anwendung läuft
 
[ot]
Zitat:

Zitat von Delphi-Hilfe
Die Groß/Kleinschreibung wird von Pos nicht berücksichtigt.

..Trotzdem hat skura recht:
Zitat:

Zitat von sakura
Groß-/Kleinschreibung macht schon einen Unterschied. So wird zum Beispiel der Text 'Hilfe' im Wort 'Delphihilfe' durch Pos nicht gefunden.

Lügt die Hilfe? oder wie oder wat? :gruebel:
[/ot]
Gruß
Stephan

sakura 30. Jul 2004 11:38

Re: Prüfen, ob eine Anwendung läuft
 
Keine Ahnung, aber die Originalhilfe schreibt:
Delphi englisch
Pos searches for Substr within S and returns an integer value that is the index of the first character of Substr within S. Pos is case-sensitive.


...:cat:...

Luckie 30. Jul 2004 11:40

Re: Prüfen, ob eine Anwendung läuft
 
Und ich glaube, es wurde schon des öfteren festgestellt, das die Hilfe an dieser Stelle falsch ist. Kann es leider nicht ausprobieren, da ich weg muss. Bis nachher dann. :hi:


Alle Zeitangaben in WEZ +1. Es ist jetzt 14:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz