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/)
-   -   Handle von gehooktem Fenster (https://www.delphipraxis.net/152618-handle-von-gehooktem-fenster.html)

Quetzalcoatl 29. Jun 2010 17:10

Handle von gehooktem Fenster
 
Hi

Ich habe einen Prozess gehookt und dieser Prozess hat mehrere Fenster.
Mittels WM_CopyData sende ich Daten an mein Hauptprogramm.
Aber wie kann ich rausfinden von welchem Fenster des Prozesses ich eine Nachricht bekomme?
Also irgendwie muss man doch an das handle des Fensters kommen?
Genaugenommen hab ich die ExtTextOut-Funktion gehookt und wenn bestimmte sachen geschrieben werden sende ich eine Nachricht, die auch empfangen wird einwandfrei. Aber wie komm ich an das Handle des Fensters wo etwa geschrieben wird?

Seh ich gerade den Wald vor lauter Bäumen nicht?

Danke für jede Hilfe :)
Quetzalcoatl

himitsu 29. Jun 2010 17:33

AW: Handle von gehooktem Fenster
 
Du bekommst doch den hDC des "Canvas" (Device-Context), wo gezeichnet werden soll.

Tja, und davon muß du dir das zugehörige Window-Handle besorgen.
(weiß jetzt nicht genau wie, aber halt das Gegenteil von MSDN-Library durchsuchenGetDC)

Dann eventuell noch bis zum "Haupt"-Window (dem Fenster) via MSDN-Library durchsuchenGetParent hocharbeiten.

Quetzalcoatl 29. Jun 2010 17:57

AW: Handle von gehooktem Fenster
 
Danke für die sehr schnelle Hilfe :)
Problem scheint gelöst..
WindowFromDC heißt das Zauberwort ;) Hatte ich schonmal probiert aber offensichtlich nicht gemerkt dass es tatsächlich klappt ;)
Danke für die Hilfe :)

edit: Nagut zu früh gefreut.. nicht bei jedem DC liefert WindowFromDC auch das richtige fenster.. oft gibt es auch einfach 0 zurück, wozu microsoft sagt:
"If no window is associated with the specified DC, the return value is NULL."

was jetzt?

was ich mich auch frag.. ich krieg über eine HCBT_ACTIVATE nachricht mit wann das fenster aktiviert wird.. und die nachricht kann mir auch das handle des fensters sagen. Nur woher weiß es das? also ich kenn das richtige handle in meinem Hauptprogramm durch die activate message.. aber in der dll die im Prozess ist weiß ich das Handle nicht..


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:36 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