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