我的DLL中有一个WH_GETMESSAGE Hook但是如果我将DLL注入一个进程,似乎DLL被注入到其他进程中。我不知道为什么会这样......
if(dwReason == DLL_PROCESS_ATTACH )
{
g_pGlobals->dllModule = hModule;
在DllMain函数中存储模块
然后我用
设置钩子m_hKeyboardHook = SetWindowsHookEx(WH_GETMESSAGE, KeyboardHook, g_pGlobals->dllModule, 0);
MSG message;
while (GetMessage(&message, NULL, 0, 0)) {
TranslateMessage(&message);
DispatchMessage(&message);
}
UnhookWindowsHookEx(m_hKeyboardHook);
自己看起来像这样的钩子:
LRESULT __stdcall KeyboardHook(int nCode, WPARAM wParam, LPARAM lParam)
{
if(nCode >= 0 && nCode == HC_ACTION)
{
MSG* pMsg = (MSG*)lParam;
if(pMsg->message == WM_KEYDOWN)
g_pMenu->OnKeyPressed(pMsg->wParam);
if (pMsg->message == WM_CHAR)
g_pMenu->OnCharPressed(pMsg->wParam);
}
return CallNextHookEx(g_pWindowsHooks->GetKeyboardHook(), nCode, wParam, lParam);
}
和是的g_pWindowsHooks-> GetKeyboardHook()返回m_hKeyboardHook
感谢您的帮助!