SetWindowsHookEx 7e错误

时间:2018-04-06 17:06:00

标签: c++ hook

我遇到了一些麻烦,需要抓住读取按键的过程。 GetLastError给出0x7e,这意味着找不到模块,虽然看起来我正确地实现了模块查找。我目前拥有的(PId是进程ID,ThreadId是主进程线程ID):

HWND hWindow = NULL;

BOOL CALLBACK EnumWindowsProc(HWND hwnd, LPARAM lParam)
{
    DWORD lpdwProcessId;
    GetWindowThreadProcessId(hwnd, &lpdwProcessId);
    if (lpdwProcessId == lParam)
    {
        hWindow = hwnd;
        return FALSE;
    }
    return TRUE;
}

LRESULT CALLBACK kbCallback(int nCode, WPARAM wParam, LPARAM lParam)
{
    KBDLLHOOKSTRUCT kbdStruct = *((KBDLLHOOKSTRUCT *)lParam);
    if (wParam == WM_KEYDOWN) {
        if (kbdStruct.vkCode = VK_F1) {
            std::cout << "f1 was pressed" << std::endl;
        }
    }

    return CallNextHookEx(NULL, nCode, wParam, lParam);
}

int main()
{
    ...

    EnumWindows(EnumWindowsProc, initt.PId);

    HHOOK hKbdHook = SetWindowsHookEx(WH_CALLWNDPROC, kbCallback, (HINSTANCE)GetWindowLongPtr(hWindow, GWLP_HINSTANCE), initt.ThreadId);
}

0 个答案:

没有答案