Konvertierung von HANDLE zu HWND für GetWindowThreadProcessId(...)



  • Hallo,

    ich hoffe, ihr könnt mir weiterhelfen.

    Ich habe eine Anwendung geschrieben, welche mit Verwendung des Beispielcodes von

    http://msdn.microsoft.com/library/default.asp?url=/library/en-us/perfmon/base/enumerating_all_processes.asp

    das Handle und die ProzessId einer Anwendung ermittelt.
    Ich habe leider nicht die Möglichkeit, das über FindWindow zu machen, da sich der Fenstername bei verschiedenen Anwendern ändert.

    Ich erhalte das Handle als HANDLE, die ProzessId als DWORD.

    Nun versuche ich verzweifelt die ThreadID zu ermitteln über GetWindowThreadProcessId. Diese Funktion benötigt das Handle leider aber als HWND.

    Könnt Ihr mir vielleicht sagen, wie ich das Problem lösen kann?

    Vielen Dank

    Liebe Grüße

    Ulrike

    EDIT: Kaum hab ich den Beitrag geschrieben, da kam mir der Geistesblitz. Ich verwende bei FindWindow einfach den Klassennamen, damit besteht das Problem nicht mehr. Entschuldigt bitte.

    LG Rike



  • Schau dir mal diese API Funktionen an:

    CreateToolhelp32Snapshot
    Process32First
    Process32Next
    Thread32First
    Thread32Next

    Mit diesen Funktionen kannst du Prozesse suchen
    und deren Thread anfzählen.



  • Naja, wenn man die ProzessID schon hat, muss man ja diese nicht nochmals ermitteln...
    Was hast Du jetzt?
    Ein Handle auf den Prozess und eine ProzessID, oder?
    Dann musst Du EnumWindows aufrufen um zu der ProzessID das passende Fenster zu bekommen... zu beachten ist hier noch, dass ein Prozess mehrere Top-Level-Fenster haben kann. Du musst das wählen was Visible ist...


Log in to reply