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/)
-   -   Delphi Denkansätze: Window-Hook (https://www.delphipraxis.net/98346-denkansaetze-window-hook.html)

Prototypjack 25. Aug 2007 18:45


Denkansätze: Window-Hook
 
Moin,

Ich bräuchte mal ein paar Denkansätze zu folgendem Thema:

Wie kann ich mich informieren lassen (mein Programm, natürlich), wenn ein sichtbares Fenster (muss nicht zwangsweise von mir sein! Ist eigentlich eher unwahrscheinlich, dass es von mir ist.) durch seinen Left/Top-Wert eine bestimmte Marke erreicht/überschreitet?

Ich habe absolut keine Erfahrung mit diesem Thema, aber ich denke da muss ich irgendwas hooken.

Könnt ihr mir ein paar Schlagworte, Möglichkeiten sagen wie ich sowas realisieren kann, bzw. wo ich suchen muss um etwas zu finden?

Grüße & Danke,
Max

Apollonius 25. Aug 2007 19:59

Re: Denkansätze: Window-Hook
 
Ich vermute dir, dass du das Tutorial auf dsdt bereitst angeschaut hast.
Schau mal in der MSDN bei setWindowsHookEx, da sind die Hook-Typen aufgeführt. Schau dir außerdem die dort verlinkten Funktionen an. Bei dir wird es wahrscheinlich auf einen WH_GETMESSAGE-Hook oder etwas ähnliches hinauslaufen.

Prototypjack 25. Aug 2007 20:19

Re: Denkansätze: Window-Hook
 
Moin,

Hmm, nein. Aber ich bin gerade dabei Assarbads Tutorial durchzuarbeiten ;)

Ich bin aber gerade eben auf etwas anderes gestoßen:
Zitat:

Zitat von Assarbad
1. Man sollte NUR SC_MINIMIZE abfangen.
2. WM_SIZE wird geschickt, nachdem bereits etwas passiert ist, ist also so oder so falsch.
3. Der Hook ist global (also in einer DLL)???
4. Statt MessageBox() versuch mal Beep() ... ist allemal weniger Eingriff ins fremde Programm.
5. TMsg ist bereits deklariert.
6. Statt SendMessage() an dein eigenes Handle nimm HWND_BROADCAST _und_ SendMessageTimeout()

Interessant wäre auch, ob du eine Message blockieren willst, oder nur selber benachrichtigt werden willst (geht auch ohne Nachrichten, mit Events oder Semaphoren).

Welchen Hooktyp benutzt du? Sollte man wohl angeben ... es gibt ja mehr als eine Möglichkeit!

Ich will nichts blockieren, folglich komme ich auch ohne Hook davon?


Grüße,
Max

Olli 25. Aug 2007 21:08

Re: Denkansätze: Window-Hook
 
Da hast du meine Worte aber aus dem Kontext gerissen und mein Tutorial ist auch schon leicht veraltet, falls ich jemals die Zeit finde, wird es eine aktualisierte Version für C und Delphi geben ... :mrgreen: :zwinker:

Für das von dir beschriebene Szenario scheint mir ein Hook unabdingbar.

Prototypjack 25. Aug 2007 22:41

Re: Denkansätze: Window-Hook
 
Zitat:

Zitat von Olli
Da hast du meine Worte aber aus dem Kontext gerissen und mein Tutorial ist auch schon leicht veraltet, falls ich jemals die Zeit finde, wird es eine aktualisierte Version für C und Delphi geben ... :mrgreen: :zwinker:

Für das von dir beschriebene Szenario scheint mir ein Hook unabdingbar.

Hmm, ok. ich werde dann wahrscheinlich über WH_GETMESSAGE gehen, wie mir bereits vorgeschlagen wurde.
Bleibt noch eine Frage:
Wie komme ich an die Daten (Top/Left-Werte der Fenster?). Tut mir leid, ich bin, wie gesagt, auf diesem Gebiet Neuling.

Danke & Grüße,
Max

Olli 25. Aug 2007 23:39

Re: Denkansätze: Window-Hook
 
Naja, was dich ja im Grunde interessiert, ist wenn sich ein Fenster bewegt (i.e. bewegt wird) - richtig? Dementsprechend müßtest du je nachdem was erreicht werden soll WM_MOVING oder WM_MOVE abfangen und die Positionen auswerten (und ggf. bei WM_MOVING auch modifizieren).

Prototypjack 26. Aug 2007 12:01

Re: Denkansätze: Window-Hook
 
Moin,

Sehr gut, ich habe den Hook komplett am laufen und er funktioniert so wie ich es erwarte.

Ehrlich gesagt bin ich etwas enttäuscht, ich dachte das wird ein riesen Stück Arbeit, aber mit Ollis Tut und euch hier im Forum ist das ganze ja schon fast trivial ;)

Danke! :dp:

Grüße,
Max

Olli 26. Aug 2007 15:28

Re: Denkansätze: Window-Hook
 
Naja, ein wenig Eigeninitiative ist schon noch erforderlich, aber an der scheint es bei dir (im Gegensatz zu vielen anderen jungen Delphianern) nicht zu mangeln! :thumb:


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