vc.net2003中如何安装WH_JOURNALRECORD全局钩子?
我有一个会话框,在按钮处理程序中有如下代码(不用DLL):
//安装日志钩子
g_hLogHook=::SetWindowsHookEx(WH_JOURNALRECORD,(HOOKPROC)JournalRecordProc,::GetModuleHandle(NULL),0);
if(g_hLogHook==NULL)
{
CloseHandle(g_hCapFile);
g_hCapFile=NULL;
return -1;
}
g_bLogging=TRUE; //连续两次将此全局变量设为TRUE
while(g_bLogging)
{
while(PeekMessage(&msg,NULL,0,0,PM_NOREMOVE))
{
//先查看消息队列,以免阻塞
GetMessage(&msg,NULL,0,0); //PeekMessage、GetMessage、DispatchMessage三个函数的联合使用应该是处理Windows下消息的常用技巧。
if(msg.message==WM_CANCELJOURNAL)
{
//如果消息是取消日志钩子,则重设
SetKeyboardState(keytbl);
g_hLogHook=SetWindowsHookEx(WH_JOURNALRECORD,(HOOKPROC)JournalRecordProc,::GetModuleHandle(NULL),0);
if(g_hLogHook==NULL)
{
CloseHandle(g_hCapFile);
g_hCapFile=NULL;
return -1;
}
}
else
{
DispatchMessage(&msg);
}
}
运行时报错,地址冲突,请问各位大虾有和解决之道