AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) lokaler Hook wird immer doppelt durchlaufen?
Thema durchsuchen
Ansicht
Themen-Optionen

lokaler Hook wird immer doppelt durchlaufen?

Ein Thema von r29d43 · begonnen am 30. Apr 2016 · letzter Beitrag vom 1. Mai 2016
 
r29d43

Registriert seit: 18. Jan 2007
289 Beiträge
 
Delphi 10.4 Sydney
 
#11

AW: lokaler Hook wird immer doppelt durchlaufen?

  Alt 1. Mai 2016, 15:07
Hast du schon mal einen Haltepunkt gesetzt und den Aufruf-Stack angeschaut?
Thx für den Tipp, der brachte was. Denn da sah ich auf einmal, wie bei den einzelnen Hookbesuchen ständig zwischen 0 und 1 wechselnde Werte im wParameter-Parameter auftauchten. Gemäß der MSDK beinhaltet dieser wParameter die Information darüber, ob die Message schon von der Message-Schlange entfernt wurde oder ob nicht. (Das hatte ich bisher einfach als eher unwichtig ignoriert).

Demgemäß scheint es also doch normal zu sein, dass zumindest eine GetMsgProc bei jeder Message zweimal aufgerufen wird. Nämlich einmal mit der Message wo diese noch nicht von der Message-Schlange heruntergenommen wurde, und ein zweites Mal wo das schon geschehen ist und wo diese Message dann anschließend (nach der Hook-Kette) direkt zur WndProc des Control weitergeschickt werden wird.

Soll heißen (zumindest für mich): Wenn man auf eine Message in so einer GetMsgProc reagieren möchte, dann muss man also auch diesen wParameter noch mit berücksichtigen und kann so auch nochmal ein bisschen genauer auf die Situation reagieren ...schon bei einer angänglichen Vorab-Betrachtung der Message, bevor die überhaupt schon abgeschickt wurde, oder erst danach wenn fest steht, dass sie tatsächlich zum Control abgeschickt wurde etc. etc..

Zacherl lag also doch schon irgendwo richtig mit seiner Vermutung
Zitat:
Ich vermute mal, dass die VCL da intern irgendwie mit den Messages hantiert und dadurch verursacht, dass diese manchmal doppelt verschickt werden.
nur anstatt "manchmal" eben wahrscheinlich immer (im oben erwähnten Kontext).

Geändert von r29d43 ( 1. Mai 2016 um 18:06 Uhr)
  Mit Zitat antworten Zitat
 


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 21:58 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