Tasten abfangen



  • Hallo, wie kann ich Tasten abfangen, wenn meine Anwendung gerade nicht aktiviert ist??
    Danke.



  • Mit einem Hook, siehe FAQ unter "Tasten".



  • Ich habe das Beispiel ausprobiert, bei mir werden aber keine Tasten abgefangen, d.h. void __fastcall TForm1::KeyHook(TMessage &Message) wird nicht aufgerufen.
    Keine Fehlermeldungen vom BCB.



  • Hmm bei mir auch nicht. Könnte das eventuell an >= Win2K liegen? 😕



  • Nein! Aber ich wette, das liegt an:

    lpfnHookProc = GetProcAddress(GetModuleHandle("keydll.dll"),"CheckKey");
    ghhookKB = SetWindowsHookEx(WH_KEYBOARD, lpfnHookProc, ghInst, NULL);
    

    Das wurde ja immernoch nicht geändert!! Deine DLL sollte "keydll.dll" heißen. Ich hatte schoneinmal drauf aufmerksam gemacht, dass das in der FAQ eingefügt werden sollte. Außerdem halte ich es für ziemlich unsinnig, sich einen Pointer auf eine Funktion in der DLL zu holen, in der man sich eh schon befindet. Wie wäre es evtl. mit

    ghhookKB = SetWindowsHookEx(WH_KEYBOARD, (HOOKPROC)CheckKey, ghInst, 0);
    

    ???



  • Vielen Dank, das erste lief sofort einwandfrei,
    also da muss sozusagen der Name der Dll rein, in der man sich befindet, sollte unbedingt in der FAQ geändert werden!!



  • Kann ich mit dem Hook auch den Tastenstatus abfragen (KeyDown, KeyUp)??

    [ Dieser Beitrag wurde am 29.04.2003 um 15:49 Uhr von Dopefish editiert. ]



  • Hmmm schau dir mal die Parameter zu den abgefangenen Nachrichten an vielleicht findest du da was.

    -junix



  • jo, so weit war ich auch.... sind aber leider nur elend lange Zahlenkolonnen....



  • Original erstellt von Dopefish:
    also da muss sozusagen der Name der Dll rein, in der man sich befindet, sollte unbedingt in der FAQ geändert werden!!

    Stellt euch nicht so an! Ist doch logisch, dass die DLL "keydll.dll" heissen muss, das lässt sich doch einwandfrei aus der zitierten Zeile entnehmen. Dass zB. die Form "TKeyHookForm" heissen muss steht doch auch nur im Code!?

    Aber so ist das eben, wenn man per Copy'nPaste programmiert und sich nicht die Mühe macht, auch zu verstehen, was der eingefügte Code eigentlich macht ... 😉

    Für die Besucher mit suboptimaler Auffassungsgabe gibt's jetzt aber einen entsprechenden Hinweis in der FAQ.



  • das ist richtig, allerdings ist dieser FAQ-Beitrag nicht gerade für Anfänger geeignet, die ohne diese Hilfe nicht weiterkommen würden (und ich bin mir nciht sicher, für wen die FAQ sonst gut sein sollte)....


Anmelden zum Antworten