SetWindowsHookEx



  • Also hi ich melde mich nach 2 Jahren pause mal wieder bei euch!!!

    Könnt ihr mir bei diesem Problem helfen:

    Ich möchte gerne einen Hook installieren und zwar einen WH_KEYBOARD Hook.

    HHOOK m_ihook;
        m_ihook = SetWindowsHookEx(WH_KEYBOARD,0,0,0);
    

    mein code bisher mehr weiß ich nicht!
    Muss ich außerdem noch KeyboardProc initialisieren? wenn ja wie?
    Wie bekomme ich die Eingaben also die Rückgabewerte des Hooks in einen String?

    Danke euch recht herzlich!!!



  • #include <windows.h>
    
    #pragma data_seg(".shared")
    HMODULE hmod;
    HHOOK theHook=0;
    HWND hwndParent=0;
    #pragma data_seg()
    
    BOOL WINAPI DllMain(HMODULE hModule,DWORD ul_reason_for_call,LPVOID lpReserved)
    {
        hmod=hModule;
        return true;
    }
    
    LRESULT CALLBACK KeybdProc(int code,WPARAM wparam,LPARAM lparam)
    {
        if(code==HC_ACTION)
        {
            // ...
            // PostMessage(hwndParent,...)
        }
        return CallNextHookEx(theHook,code,wparam,lparam);
    }
    
    void KHK_stop()
    {
        if(!UnhookWindowsHookEx(theHook))
            MessageBox(0,"UnhookWindowsHookEx failed.","Error",MB_ICONERROR);
    }
    
    void KHK_start(HWND hwndParent)
    {
        if(theHook)
            KHK_stop();
        ::hwndParent=hwndParent;
        theHook=SetWindowsHookEx(WH_KEYBOARD,KeybdProc,hmod,0);
        if(!theHook)
            MessageBox(0,"SetWindowsHookEx failed.","Error",MB_ICONERROR);
    }
    
    // .def
    LIBRARY keyhk
    
    SECTIONS
        .shared READ WRITE SHARED
    
    EXPORTS
        KHK_start   @1
        KHK_stop    @2
    


  • dankeschön für die antwort ich werde es gleich testen!!!



  • hab es versucht aber er bringt den folgnden fehler:

    'SetWindowsHookExA' : Konvertierung des Parameters 2 von 'long (int,unsigned int,long)' in 'long (__stdcall *)(int,unsigned int,long)' nicht moeglich

    schade wäre nett wenn du mir nochmal helfen würdest!!! 🙂


Anmelden zum Antworten