Avatar billede orange_newton Nybegynder
03. marts 2005 - 08:41 Der er 2 kommentarer

Brug af hook funktion

Jeg har et problem med at få min hook til at slette beskeder fra message queue. Idéen var at slette alle keyboard messages hvor tasten der blev trykket på er VK_UP, VK_DOWN, VK_RIGHT og VK_LEFT men det ser ikke ud til at min hook gør det den skal.

Jeg startede med at benytte WH_KEYBOARD men den ville ikke slette jeg skiftede så til WH_CALLWNDPROC men den må ikke påvirke beskederne så systemet var ved at crashe. Til sidst har jeg prøvet at bruge WH_GETMESSAGE.

koden i DLL'en:
__declspec(dllexport) LRESULT CALLBACK KeyboardProc(int code,WPARAM wParam,LPARAM lParam)
{
    if(code<0)
        return CallNextHookEx(NULL,code,wParam,lParam);
    MSG *test;
    MSG hejsa;
    test=(MSG *)lParam;
    if(test->wParam==VK_UP||test->wParam==VK_DOWN||test->wParam==VK_LEFT||test->wParam==VK_RIGHT)
        GetMessage(&hejsa,test->hwnd,WM_KEYFIRST,WM_KEYLAST);
    return CallNextHookEx(NULL,code,wParam,lParam);
}

koden i exe filen:
static HHOOK hHook;
static HMODULE DllModul;
static HOOKPROC Protocol;
char besked[256];
DllModul = LoadLibrary("hook.dll");
if(DllModul == NULL)
{
    FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,besked,256,NULL);
    MessageBox(hWnd,besked,"DllModul",MB_OK);
}
else
{
    Protocol = (HOOKPROC)GetProcAddress(DllModul,"KeyboardProc");
    if (Protocol == NULL)
    {
        FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,besked,256,NULL);
        MessageBox(hWnd,besked,"Protocol",MB_OK);
    }
    hHook=SetWindowsHookEx(WH_GETMESSAGE,Protocol,(HINSTANCE)DllModul,0);
    else
    {
        if(hHook==NULL)
        {
            FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM,NULL,GetLastError(),0,besked,256,NULL);
            MessageBox(hWnd,besked,"hHook",MB_OK);
        }
    }
}

jeg benytter Microsoft Visual C++ 6.0
Avatar billede orange_newton Nybegynder
03. marts 2005 - 08:50 #1
ja ok nu har jeg fået ændret funktionsnavnet men det virker stadig ikke...
Avatar billede bertelbrander Novice
07. marts 2005 - 21:57 #2
Du kunne kikke på:
http://home20.inet.tele.dk/midgaard/snip/rmkey.html

Den fjerner pagedown.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester