![]() |
Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
Zitat:
Delphi-Quellcode:
Das sind erstmal die funktionen, die du unbedingt brauchst.
const
WM_USER = $0400; // aus messages.pas WM_KEYBHOOK = WM_USER + 346; [...] type [...] var KeyboardHook: HHOOK; function KeyboardProc(hCode: Integer; wParam: Longint; lParam: Longint): LRESULT; stdcall; var Wnd: THandle; begin if hCode = HC_ACTION then begin Wnd := FindWindow(nil, 'Form1'); if Wnd > 0 then PostMessage(Wnd, WM_KEYBHOOK, wParam, lParam); end; Result := CallNextHookEx(KeyboardHook, hCode, wParam, lParam); end; function SetKeyboardHook: Boolean; begin KeyboardHook := SetWindowsHookEx(WH_KEYBOARD, @KeyboardProc, HInstance, 0); Result := KeyboardHook <> 0; end; function RemoveKeyboardHook: Boolean; begin Result := UnhookWindowsHookEx(KeyboardHook); end; Jetzt erstellst du eine prozedur mit dem namen: "WMKEYBHOOK". Das ist so was wie OnKeyPress in diesem fall.
Delphi-Quellcode:
Um die falle jetzt zu starten, irgendwo in dein programm
procedure TMainForm.WMKEYBHOOK(var Msg: TMessage);
begin if IntToStr(Msg.wParam)=13 then [......]; end;
Delphi-Quellcode:
reinschreiben. (OnCreate oder so was)
if not SetKeyboardHook then ShowMessage('error');
Um es zu stopen:
Delphi-Quellcode:
Bei dem Beispiel wurde eigentlich eine dll benutzt, aber ich habe es auch so ausprobiert, das funktioniert trotzdem
if not RemoveKeyboardHook then ShowMessage('error');
|
Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
OK.... danke für die Antwort; werde wohl etwas brauchen um die Funktion zu verstehen... mal nach meinem Umzug testen.
|
Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
Für allgemeine Fragen bezüglich Hooks kannst du dir von
![]() |
Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
Um mal die Extra-Tasten genauer zu erklaeren:
Die gehoeren garnicht zur Tastatur. Eine USB Tastatur tritt als mehrere Geraete auf und nur die normalen Tasten sind im Keyboard-Interface. Unter Win 2000/XP laeuft ein System-Thread um das zweite Interface auszulesen und die entsprechenden Tasten-Messages zu generieren. Es gibt noch ein drittes Interface nur fuer die Power-Taste auf den Tastaturen. Daraus ergeben sich mehrere lustige Seiteneffekte. Das Keyboard-Interface ist gegen Lesen durch ein Programm geschuetzt, da Windows das Interface exklusiv oeffnet. Das zweite Interface hingegen ist nicht exklusiv geoeffnet (oder unter Win 98 garnicht). Daher kann die Tray-Applikation zum Tastaturtreiber selber die Funktion des in Win 98 fehlenden System-Threads uebernehmen. Zusaetzlich kann die Tray-Applikation auch noch den Treiber beeinflussen und alle moeglichen Mappings vornehmen. |
Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
Dennoch springt KeyDown bei mir weder auf $B0 an, noch funktioniert die beschriebene Funktion von XHelp.
Hat jemand eine funktionierende Demo? |
Re: Sondertasten (Play, Stop, nächster Titel) bei Tastaturen
evtl auch auf shift+strg+etc down achten dabei
hab ne fujitsu und da sind manche doppelt belegt weils wohl nichtmehr soviele freie vks_ gab. ps habn simplen timer gemacht + getkeystate funzt auch. wie man die keys rausfindet dürfte bekannt sein |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:12 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