2
我對SetWindowsHookEx和WH_CALLWNDPROC有個大問題!當使用SetWindowsHookEx函數當地鉤C++全局鉤子。爲什麼SetWindowsHookEx返回NULL?
HHOOK hook = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, GetModuleHandle(NULL), GetCurrentThreadId());
所有工作正常,但是當我嘗試設置全局鉤子或鉤其他程序:
HHOOK hook = SetWindowsHookEx(WH_CALLWNDPROC, CallWndProc, GetModuleHandle(NULL), threadId);
其中threadId = GetWindowThreadProcessId(window, NULL);
和HWND window = ::FindWindow(NULL,"Program title");
我得到空在鉤...
我讀了非常多的掛鉤,但是,我不明白哪裏是w orng ... 我頭痛幾天。 非常感謝您的提問,並對我的英語感到抱歉。
如果你想建立一個全局鉤子,鉤子程序必須是一個dll,你需要將該dll的'HMODULE'傳遞給'SetWindowsHookEx'。 – IInspectable
要展開IInspectable的評論,請http://msdn.microsoft.com/en-us/library/windows/desktop/ms644990%28v=vs.85%29.aspx聲明「所有全局掛鉤函數必須位於庫中。」 – IronMensan
頭疼你應該拿Panadol和喝水:) –