AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Prozess-Handle vs. Fenster-Handle
Thema durchsuchen
Ansicht
Themen-Optionen

Prozess-Handle vs. Fenster-Handle

Ein Thema von Chewie · begonnen am 25. Jul 2002 · letzter Beitrag vom 9. Aug 2002
 
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
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz