Einzelnen Beitrag anzeigen

Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#8
  Alt 27. Jul 2002, 17:05
Hmm, ich glaube, ich hab oben was Falsches gesagt. Ich glaub, ich habe die ThreadID doch nicht. Ich schreib mal auf, wie ich denk, wie man die ThreadID über den Namen und Pfad der ausführbaren Datei kommt.

1. Erstellung eines System-Snaphshots mit CreateToolhelp32Snapshot

2. Ermittlung der ProcessID aller Prozesse über Process32First und Process32Next mit dem angegebenen Dateinamen.

3. Ausführen von Module32First und Module32Next. Vergleich jeder ProcessID mit der Liste der ProcessIDs von 2. Wenn ID übereinstimmt, heißt das, der Name des ausgeführten Programms ist gleich. Dann mit Hilfe von szExePath die endgültig gesuchte ProcessID herausfinden.

4. Ausführen von Thread32First und Thread32Next. Sichern aller ThreadIDs, die als th32OwnerProcessID die ProcessID von 3 haben. Somit hat man die ThreadIDs aller Threads des gewünschten Prozesses.

5. Mit EnumThreadWindows die Fenster aller Threads durchgehen, solange, bis das Hauptformular gefunden wurde.
Problem: Wie kann man dieses erkennen?

6. Nun hat man das Fensterhandle und kann mit diesem machen, was man will


Ist nur ein reichlich komplizierter (zumindest für nen WinAPI-Anfänger) Weg. Gibts einen einfacheren Weg?
Eine Verkürzung wäre, wenn man den Hauptthread herausfinden könnte. Dann müsste man bei 5 nur einmal das EnumThreadWindow-Gedingsel durchgehen. Dazu wichtig die Frage: In einem Prozess mit mehreren Threads, ist das Hauptfenster überhaupt immer in dem Hauptthread? Bzw. gibt es eigentlich einen Hauptthread und davon abgeleitete Threads oder kann es mehrere "Hauptthreads" geben?

Fragen über Fragen, wäre schön, wenn mir jemand darauf Korrekturen, Tips oder was auch immer geben könnte.
Nur mal so nebenbei: Die theoretische Vorgehensweise hab ich mit Hilfe des Windows SDK und den Antworten hier von jbg entwickelt und das ist die beste Lernmethode. Das in Code umzusetzen ist zweitrangig.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat