![]() |
Control unter der Maus aus DLL feststellen
Hallo zusammen,
ich möchte eine DLL schreiben, die bei verschiedenen Ereignissen feststellt, welches Control des aufrufenden Programms sich gerade an der Mausposition befindet (oder - ggf. - welches Control den Focus hat). Innerhalb des Hauptprogramms ist das zB mit FindVCLControl kein Problem, aber aus der DLL heraus erhalte ich immer nil zurück. Hat jemand eine Idee, wie ich das hinbekommen kann? Vielen Dank schonmal! |
AW: Control unter der Maus aus DLL feststellen
|
AW: Control unter der Maus aus DLL feststellen
Als .dll glaube ich klappt so etwas nur mit einem Hook.
|
AW: Control unter der Maus aus DLL feststellen
Habe mal ein wenig herumgespielt, EnumChildWindows(), GetWindowRect() und PtInRect() nutzte ich. Per GetWindow() kann man die z-order erfahren.
Mit RealChildWindowFromPoint() kann man das ganze auch abkürzen. Als .dll komme ich um etwas wie
Delphi-Quellcode:
nicht drum herum.
hMouseHook := SetWindowsHookEx(WH_MOUSE, @mHookProc, GetModuleHandleFromInstance, 0);
|
AW: Control unter der Maus aus DLL feststellen
Nein, da bei DLL erstmal "grundsätzlich" TypeIntofs, RTTI, VCL usw. getrennt sind und ihre Delphi-Klassen nicht geshared werden, sie sich also garnicht verstehen.
Ausnahme: EXE und DLL wurden gegen die VCL gelinkt. (mit Packages kompiliert ... natürlich Beide mit der selben Compilerversion) |
AW: Control unter der Maus aus DLL feststellen
Du kannst zum Beispiel der DLL ein Interface übergeben, über die die DLL die Information aus dem Hauptprogramm abfragen kann.
|
AW: Control unter der Maus aus DLL feststellen
Da habe ich wohl was missverstanden, das was ich oben schrieb gilt für egal was für Fenster und nicht beschränkt aufs Eigene Programm.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:23 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