Problem mit GetKeyEventResult aus Hook-Dll von CodeProject



  • Hi!
    ich hab auch n Hook-Problem. Und zwar habe ich mir die Hook-Dll von CodeProject heruntergeladen. Ich hab alle Funktionen eingebunden. Aber ich bekomme beim Aufruf der Funktion GetKeyEventResult immer einen Fehler:
    Zugriffsverletzung bei Adresse 00000000. Lesen von Adresse 00000000.
    Der Code sieht so aus:
    Cpp-Datei:

    void __fastcall TForm1::KB_Hook(TMessage &msg)
    {
    	KEYRESULT kr;
    	UINT nMask = KH_MASK_KEYNAME;
    	GetKeyEventResult(msg.WParam, msg.LParam, &kr, nMask); //Hier gibts den Fehler
    }
    

    Header-Datei:

    class TForm1 : public TForm
    {
    ...
    private:	// Benutzer-Deklarationen
    	void __fastcall KB_Hook(TMessage &msg);
    	void __fastcall MS_Hook(TMessage &msg);
    ...
    public:		// Benutzer-Deklarationen
    	BEGIN_MESSAGE_MAP
    		MESSAGE_HANDLER(WM_KEYHOOK, TMessage, KB_Hook); //Dies ist für den Keyboardhook
    		MESSAGE_HANDLER(WM_MOUSEHOOK, TMessage, MS_Hook); //Maus-hook is auch dabei ;)
    	END_MESSAGE_MAP(TForm);
    ...
    };
    

    Vorher füge ich noch mit

    KEYENTRY ke;
    	ke.nMessage = WM_KEYHOOK; // Our message ID
    	ke.hCallWnd = Handle; // Send message to this window
    	ke.hHookWnd = 0; // Capture key-strokes occurred in any windows
    	ke.iCombKeys = 0; // Combination key states do not matter
    	ke.iIndicators = 0; // Caps-lock, Num-lock,
    					   // Scroll-lock on/off states do not matter
    	ke.iKeyEvent = KH_KEY_DOWN | KH_KEY_UP;
    	ke.iMinVKCode = hotkey->HotKey; // Capture all keys regardless of their virtual key codes
    	ke.iMaxVKCode = hotkey->HotKey;
    	AddKeyEntry(&ke);
    

    die zu hookende Taste hinzu.
    hotkey ist einen THotKey-Komponente, in die nur einzelne Buchstaben eingegeben werden dürfen (kein Shift, etc..). Das soll aber auch noch geändert werden.

    Kann mir jemand helfen 😕
    Sowohl bei dem Adress-Fehler als auch bei dem THotKey-Feld?

    Edit: Der Hook wird auch nur aktiv, wenn das eigene Fenster im Focus ist. Kann mir da vllt jemand auch zu sagen, warum das nicht geht?

    ich weis...drei Fragen auf einmal, und für jede Frage einen eigenen Thread, aber da die Fragen direkt zusammengehören, dachte ich mir, ich kanns auch in einen schreiben 😃



  • Hmm weis keiner ne Antwort??

    Ich hab das ganze Projekt mal hier hochgeladen, da ich auf einmal auch einen Linker error bekomme, ich aber nicht weis, woher 😞



  • So, der Linkererror is weg. Die anderen Probleme hab ich noch nicht gelöst bekommen 😞

    Bitte helft mir 🙄


Anmelden zum Antworten