AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Delphi Control unter der Maus aus DLL feststellen
Thema durchsuchen
Ansicht
Themen-Optionen

Control unter der Maus aus DLL feststellen

Ein Thema von Tower1234 · begonnen am 17. Jul 2018 · letzter Beitrag vom 17. Jul 2018
Antwort Antwort
Tower1234

Registriert seit: 15. Feb 2013
12 Beiträge
 
#1

Control unter der Maus aus DLL feststellen

  Alt 17. Jul 2018, 09:41
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!
  Mit Zitat antworten Zitat
Benutzerbild von Neutral General
Neutral General

Registriert seit: 16. Jan 2004
Ort: Bendorf
5.219 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Control unter der Maus aus DLL feststellen

  Alt 17. Jul 2018, 09:55
WindowFromPoint bzw. ChildWindowFromPoint ist wahrscheinlich was du brauchst.
Michael
"Programmers talk about software development on weekends, vacations, and over meals not because they lack imagination,
but because their imagination reveals worlds that others cannot see."

Geändert von Neutral General (17. Jul 2018 um 09:57 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Control unter der Maus aus DLL feststellen

  Alt 17. Jul 2018, 09:57
Als .dll glaube ich klappt so etwas nur mit einem Hook.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Control unter der Maus aus DLL feststellen

  Alt 17. Jul 2018, 10:39
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 hMouseHook := SetWindowsHookEx(WH_MOUSE, @mHookProc, GetModuleHandleFromInstance, 0); nicht drum herum.
Gruß vom KodeZwerg

Geändert von KodeZwerg (17. Jul 2018 um 10:53 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.063 Beiträge
 
Delphi 12 Athens
 
#5

AW: Control unter der Maus aus DLL feststellen

  Alt 17. Jul 2018, 10:59
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)
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.582 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Control unter der Maus aus DLL feststellen

  Alt 17. Jul 2018, 11:30
Du kannst zum Beispiel der DLL ein Interface übergeben, über die die DLL die Information aus dem Hauptprogramm abfragen kann.
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Control unter der Maus aus DLL feststellen

  Alt 17. Jul 2018, 11:37
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.
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Antwort Antwort


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 16:44 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