错误的消息挂钩

时间:2013-06-01 23:27:45

标签: c++ hook message-queue game-engine

在询问在这里挂钩游戏的消息队列后,我被告知要使用GetWindowThreadProcessId()。这是我写的代码和注入的代码,它似乎根本不起作用。

LRESULT CALLBACK MessageHook ( int code, WPARAM wParam, LPARAM lParam)
{
    if (code >= 0)
    {
        if(((tagMSG*)lParam)->message == WM_KEYDOWN)
            MessageBox(NULL, "Called", "Success", MB_OK);
    }


    return CallNextHookEx (hookHandle, code, wParam, lParam);
}

void OnAttach(HMODULE hDll)
{
    while(1)
    {
        Sleep(100);
        if( GetAsyncKeyState( VK_INSERT ) &0x8000 )
        break;
    }


    hookHandle = SetWindowsHookEx (WH_GETMESSAGE, MessageHook, hDll,
                                  GetWindowThreadProcessId(GetForegroundWindow(), nullptr));

    if(hookHandle == NULL)
        MessageBoxA(NULL, "Error Hooking Message Queue", "Problem", MB_OK);
}

然而根本没有任何事情发生,根据我从之前的回答中理解,hWnd线程必须是处理消息队列的线程,因此我似乎不可能挂钩错误的队列。我可能错了,但

0 个答案:

没有答案