Entwickler-Ecke

Windows API - Existiert ein bestimmtes Prozess? Wie...


Philer - So 09.11.03 07:54
Titel: Existiert ein bestimmtes Prozess? Wie...
Also ich möchte ein kleinen Tool proggn, dass, das prozess SeriousEditor.exe schliesst, wenn sie läuft.
Gut mit Zockies Teil hab ich das hingekriegt. Allerdings funktioniert es nur, wenn der o.g. Prozess läuft. Ansonsten kommt ein Fehler.
Ich möchte aber, dass er zuerst Überprüft ob der o.g. Prozess überhaupt läuft, bevor er den Prozess killt.
Mit FindWindow geht es nicht, weil die Anwendung unterschiedliche captions hat. Also wenn ich im SeriousEditor z.b. auf NEU klicke steht in der Caption = Serious Editor - [Untitled.wld], statt nur Serious Editor.
Wie heisst der Code, der Überprüft ob der o.g. Prozess läuft und ein True oder false zurück lässt. Ist das überhaupt möglich? Ich bin halt noch Delphi-Anfänger :wink:


Delete - So 09.11.03 09:54
Titel: Re: Existiert ein bestimmtes Prozess? Wie...
Philer hat folgendes geschrieben:
Also ich möchte ein kleinen Tool proggn, dass, das prozess SeriousEditor.exe schliesst, wenn sie läuft.
Gut mit Zockies Teil hab ich das hingekriegt. Allerdings funktioniert es nur, wenn der o.g. Prozess läuft. Ansonsten kommt ein Fehler.
Ich möchte aber, dass er zuerst Überprüft ob der o.g. Prozess überhaupt läuft, bevor er den Prozess killt.

Wenn du 100% sicher sein kannst, dass der Name der EXE nie geändert wird (kann man das? :roll:), dann wäre evtl. ein Suche in: Delphi-Forum, Delphi-Library PROZESS SNAPSHOT etwas für dich, denn damit kannst du den Namen des Programms suchen. Und nur wenn er existiert, killst du den Prozess.

Zitat:
Mit FindWindow geht es nicht, weil die Anwendung unterschiedliche captions hat. Also wenn ich im SeriousEditor z.b. auf NEU klicke steht in der Caption = Serious Editor - [Untitled.wld], statt nur Serious Editor.

Okay, "findwindow" mag nicht gehen. Suche in: Delphi-Forum, Delphi-Library ENUMWINDOWS allerdings schon, weil diese Funktion alle laufenden Fenster der Reihe nach auflistet. Du hättest dann die Möglichkeit, den Text in der Titelleiste zu ermitteln und zu prüfen, ob dort der Begriff "Serious Editor" vorkommt.
Allerdings wäre die bessere Idee, nach dem Klassennamen des Fensters zu suchen. Der ändert sich IMHO nie, auch bei einer deutschen und/oder englischen Version des Spiels nicht. Den kannst du ebenfalls ermitteln lassen. (Schau dir dazu bitte mal Beispiele für "EnumWindows" an.) Und dann hast du wieder einen Ansatzpunkt für "findwindow", weil der erste Parameter nämlich der Klassenname ist.


Philer - So 09.11.03 16:01

Ja oder mir fällt gerade ein, da ich ja Luckies EnumProcesses genommen hab. Da ist ja dann die ListBox mit den Processes und man könnte ja überprüfen ob ein SeriousEditor.exe in der ListBox ist, oder?
nun ja ich habe aber keine idee wegen den code. :D :oops:


Delete - So 09.11.03 16:27

Wie, du hast keine Idee? Wenn es nicht zu anstrengend für dich ist, dann bewege doch einfach den Mauszeiger auf die beiden Links und dann drück mal mit aller Kraft auf die linke Maustaste.

Da findest du mehr als genug Material zum Arbeiten.


Philer - So 09.11.03 17:26

lol ok mach ich ;)


Philer - So 09.11.03 17:29

eigentlich habe ich eben etwas anderes gefragt..
und zwar, das ein TRUE zurückgegeben wird, wenn ein bestimmtes Item egal welche Zeile in der ListBox existiert.