AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

KeyHook Irreführend

Ein Thema von EWeiss · begonnen am 12. Apr 2011 · letzter Beitrag vom 13. Apr 2011
 
Blup

Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.487 Beiträge
 
Delphi 12 Athens
 
#2

AW: KeyHook Irreführend

  Alt 13. Apr 2011, 10:34
Irgendwie verwirrt mich der ganze Beitrag etwas.

Habe mal für mein Piano eine KeyHook.dll eingebunden.
Davon gibt es sicherlich tausende, jeder kann eine DLL so nennen.

Normalerweise wird so eine DLL im System registriert, so dass diese beim Start jeder Anwendung mitgeladen wird
und so alle Tastatureingaben verarbeiten kann, egal welche Anwendung den Focus hat.
Der Name der DLL ist eigentlich unwichtig.
Kompliziert wirds wenn 64- und 32-Bit-Anwendungen gemischt auftreten.

Mein Problem vorher
Wenn ich ohne Keyhook arbeite und die Tastatur für die Klaviertasten freigebe
kann ich alle meine Button nicht mehr bedienen da diese innerhalb der SuperClass nach
If WinHandle = GetFocus then abfragen.

Wenn ich bedingt durch die Tastaturzuweisung den Focus auf das MainHandle lege
schlägt diese Abfrage natürlich fehl.
Normalerweise verwenden Musikinstrumente die Midi-Schnittstelle, dieses scheinbar nicht.
Von was für einer SuperClass ist hier die Rede, aus welcher Komponentensammlung stammt diese
und was machen diese Klassen, ist Quellcode vorhanden, kann dieser gepatcht werden?

Jetzt habe ich den Keyhook eingebaut aber das problem bleibt bestehn da ich als Hook Handle
ja auch wieder das Handle der MainForm angegeben habe.
Normalerweise meldet man bei der KeyHook.dll das Fenster(Handle) an, das über die Tasten informiert werden soll,
diese verarbeitet, oder auch nicht und damit an die Anwendung weitergibt, die derzeit den Focus hat.

Zitat:
Was ich auch nicht verstehe warum muss man dann obwohl ein Hook installiert ist seine
Anweisungen noch über WM_KEYDOWN: und WM_KEYUP: übergeben.
OK das ist quatsch irgendwo müssen die Keyevents ja übergeben werden.
Der Datenaustausch zwischen der DLL und der Anwendung kann auch über Nachrichten erfolgen,
aber nicht unbedingt über WM_KEYDOWN und WM_KEYUP.

Welchen Sinn macht dann ein Hook?
Wenn er die Anwendung genauso blockt wie vorher.
Ein Keyboard-Hook blockt keine Anwendung, bitte etwas genauer formulieren.

Bei bedarf sende ich mal den Quelltext vom Hook.
Den Quelltext der KeyHook.dll und den Quelltext in deiner Anwendung.

PS:
Wie kann ich SetFocus behandeln das nicht die anderen Controls geblockt werden.
Was verstehst du unter "blockt"?
Der Begriff scheint mir in Zusammenhang mit SetFocus nicht sinnvoll.
  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 16:41 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