Снова SetWindowHookEx
От: Spider84 Россия http://spider.vc
Дата: 30.10.02 08:31
Оценка:
Пытаюсь написать хук клавиатуры и сразу возникла проблема в написании DLL. При установки самого хука devenv.exe начинает жрать все 99.9% процесорного времени , но этого не происходит если в KeyboardProc оставить только:
return (int)CallNextHookEx(hdHookData->ghHook,nCode,wParam,lParam);

на самом деле DLL выглядит прмерно так:
#define WM_MYHOOKMSG (WM_USER+1)

HWND hCaller;
HHOOK ghHook;

BOOL WINAPI DllMain(HINSTANCE hDLLInst, DWORD fdwReason, LPVOID lpvReserved){
    ...
}

LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    if (nCode>=0)
    {
        PostMessage(hCaller,WM_MYHOOKMSG,wParam,lParam);

    }
    return (int)CallNextHookEx(hdHookData->ghHook,nCode,wParam,lParam);
}

HHOOK APIENTRY SetKeyHook(HWND CallerHwnd)
{
    if (ghHook) UnhookWindowsHookEx(hdHookData->ghHook);
    hCaller=CallerHwnd;
    ghHook=SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)KeyboardProc,hInstDLL,0);
    return ghHook;
}

void APIENTRY ReleaseHook(void)
{
    UnhookWindowsHookEx(ghHook);
}

Из программы вызываю SetKeyHook(hMainWnd); где hMainWnd это хендл моего окна, чтобы потом получать сообщения о хуках. Но в самой программе я WM_MYHOOKMSG ещё никак не обрабатываю. Я хук то поставить не могу
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.