Einzelnen Beitrag anzeigen

Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#14

AW: In Hook auslösender Prozess ermitteln

  Alt 16. Dez 2013, 16:47
Und irgendwie ist mir immer noch nicht klar, warum Ihr so auf dem Handle oder der ID oder was auch immer des Prozesses oder Programmes herum reitet, welches den Hook gestartet hat. Die weiss ich ja. Aber wie komme ich an die PID, welche den Hook (oder von mir aus die DLL) aufruft?
Weil die Nachricht vom Betriebssystem kommt und von keinem Programm.

Man kann sich in diese Nachrichtenschlange einhängen (hooken) also einen Einhänger (Hook) dort reinsetzen, da es sich um einen spezielle Nachrichttypen (WH_*) handelt, wo man sich einhängen kann.

Siehe Hooks
Zitat:
A hook is a point in the system message-handling mechanism where an application can install a subroutine to monitor the message traffic in the system and process certain types of messages before they reach the target window procedure.
Dein Denkfehler ist, dass das Tastaturereignis von einer Anwendung kommt.

Es ist aber genau umgekehrt. Die Tastatur weiß nichts von irgendeiner Anwendung. Die bekommt nur den Anschlag mit und erschreckt sich dabei so sehr, dass eine Nachricht an das Betriebssystem gegeben wird.

Dieses fühlt sich nun veranlasst eine Nachricht (WH_KEYBOARD_LL) zu verschicken.
Dann wird das aktive Fenster ermittelt und an die Anwendung wird das Tastaturereignis geschickt.

Also zum Zeitpunkt (WH_KEYBOARD_LL) hat sich noch keiner darum gekümmert, wer das Tastaturereignis empfangen soll.
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (16. Dez 2013 um 16:50 Uhr)
  Mit Zitat antworten Zitat