尝试在自己的win32 console程序中测试一下SetWinEventHook函数。
代码如下:void CALLBACK MyWinEventProc(
HWINEVENTHOOK hWinEventHook,
DWORD event,
HWND hwnd,
LONG idObject,
LONG idChild,
DWORD dwEventThread,
DWORD dwmsEventTime
)
{
cout << _T("hahahahah") << endl;
}int _tmain(int argc, _TCHAR* argv[])
{
HWINEVENTHOOK hHook = ::SetWinEventHook(EVENT_MIN, EVENT_MAX, NULL, MyWinEventProc, 0, 0,
WINEVENT_OUTOFCONTEXT);
if (hHook == NULL)
{
cout << "NULL" << endl;
system ("pause");
}
for (int i = 0; i < 1000; i++)
cout << i << endl;
Sleep(1000); system("pause");
return 0;
}发现注册hook的函数成功,hHook不为NULL,但是回调函数完全不会被调用,求教!
代码如下:void CALLBACK MyWinEventProc(
HWINEVENTHOOK hWinEventHook,
DWORD event,
HWND hwnd,
LONG idObject,
LONG idChild,
DWORD dwEventThread,
DWORD dwmsEventTime
)
{
cout << _T("hahahahah") << endl;
}int _tmain(int argc, _TCHAR* argv[])
{
HWINEVENTHOOK hHook = ::SetWinEventHook(EVENT_MIN, EVENT_MAX, NULL, MyWinEventProc, 0, 0,
WINEVENT_OUTOFCONTEXT);
if (hHook == NULL)
{
cout << "NULL" << endl;
system ("pause");
}
for (int i = 0; i < 1000; i++)
cout << i << endl;
Sleep(1000); system("pause");
return 0;
}发现注册hook的函数成功,hHook不为NULL,但是回调函数完全不会被调用,求教!
运行后结果是什么?
{
cout << _T("hahahahah") << endl;
}
我觉得不判断event也应该可以work啊。