gpt4 book ai didi

c++ - 为什么 SetWindowsHookEx 返回 0?

转载 作者:太空狗 更新时间:2023-10-29 21:07:48 34 4
gpt4 key购买 nike

我正在尝试设置一个 WH_CBT Hook ,但它始终返回 0。我检查了错误,得到了错误 1428。我稍微研究了一下,发现 hMod 参数有问题,虽然我看不出我应该在其中放什么而不是 。有谁知道我做错了什么?

这是我的代码:

#include "stdafx.h"
#include "Windows.h"
#include <iostream>
using namespace std;

HHOOK hookHandle;

LRESULT CALLBACK CBTProc( int nCode, WPARAM wParam, LPARAM lParam);

int _tmain(int argc, _TCHAR* argv[])
{
hookHandle = SetWindowsHookEx(WH_CBT,CBTProc,NULL,0);

if(hookHandle == NULL)
{
cout << "ERROR CREATING HOOK: ";
cout << GetLastError() << endl;
getchar();
return 0;
}

MSG message;

while(GetMessage(&message, NULL, 0, 0) != 0)
{
TranslateMessage( &message );
DispatchMessage( &message );
}



cout << "Press any key to quit...";
getchar();

UnhookWindowsHookEx(hookHandle);

return 0;
}

LRESULT CALLBACK CBTProc( int nCode,WPARAM wParam, LPARAM lParam)
{
cout << "hello" << endl;
return CallNextHookEx(hookHandle, nCode,
wParam, lParam);
}

附言如果代码中包含愚蠢的元素,我深表歉意。我不是编程新手,只是 C++ 新手。

最佳答案

如果指定hook为全局的threadid为0。为此,需要将钩子(Hook)注入(inject)其他进程。这意味着 Hook 需要从 DLL 公开。您需要将 Hook 过程移动到一个 dll,或者在您的进程中指定一个线程。

关于c++ - 为什么 SetWindowsHookEx 返回 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4388533/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com