首先建了一个基于对话框的MFC工程,我没有用DLL来写日志钩子函数,而是直接做成了一个全局函数!!
if(NULL==g_hLogHook)
{
g_hLogHook=SetWindowsHookEx(WH_JOURNALRECORD,(HOOKPROC)JournalLogHook,NULL,0);
}
if(g_hLogHook)
{
MessageBox("ok");
}
问题是上面的钩子安装失败,我在猜想可能是由于SetWindowsHookEx函数中的第三个参数的问题,不知道是不是?
因为我想做一个全局钩子,第三个参数说要指向DLL的句柄,但是这不是DLL文件,我该指向哪?
我已经在网上找了一天的帖子,就是没有解决一个基于对话框的MFC工程中用日志钩子的问题,全是文档中用钩子!!!
然后第三个参数就是AfxGetApp()->m_....这些!谁能解决下我为什么安装失败!!

解决方案 »

  1.   

    全局钩子必须有DLL,否则不行。因为每个进程的地址空间都是独立的
      

  2.   

    SetWindwosHookEx最后两个参数不能同时为0。全局钩子要用DLL实现。
      

  3.   

      g_hLogHook=::SetWindowsHookEx(WH_JOURNALRECORD,(HOOKPROC)JournalRecordProc,::GetModuleHandle(NULL),0);   
      

  4.   

    大哥,你们有没有搞懂有的钩子不用DLL的啊?不懂的就不要来发话,一发话就是错的!!MSDN说了日志钩子不用DLL吗?你们怎么还说要用DLL!我测了一下好像就是第三个参数的问题!!oyljerry才是高手!谢谢你的方法!!