我试图设置一个WH_CBT
钩子,并且它一直返回0。 我检查了错误,我得到了错误1428.我研究了一下,发现我有一个hMod
参数的问题,但我看不到我应该放入什么,而不是null
。有谁知道我做错了什么?为什么SetWindowsHookEx返回0?
这是我的代码:
#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++。
怎么样?你能举个例子吗? – Oran 2010-12-08 14:29:23
向我的回答添加了一个示例 – 2010-12-08 14:30:47