我写的消息钩子 怎么一挂上就非法操作?而且其他的应该用程序也被告称非法操作了,下面是我的代码,我写在dll里了:
LRESULT CALLBACK CallWndProc(int nCode, WPARAM wParam, LPARAM lParam)
{
LRESULT RetVal = CallNextHookEx( hkb, nCode, wParam, lParam );
return RetVal;
}挂钩子:
hkb=SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)CallWndProc, AfxGetInstanceHandle(), 0);请问这是为什么啊?救命啊

解决方案 »

  1.   

    SetWindowsHookEx的第三个参数应该是dll的Instance
      

  2.   

    AfxGetInstanceHandle() 获得的不是dll的instance么?那应该怎么获得阿?
      

  3.   

    GetModuleHandle();
    然后写一个DllMain()
    {
       代码//将hIstance传给一个全局的HINSTANCE变量
    }
    //以上代码在dll中完成。
    然后在程序中去调用在dll中定义的全局变量就可以得到钩子的实例的句柄了
      

  4.   

    AfxGetInstanceHandle(),????
    hInstance.
      

  5.   

    获得句柄实例,AfxGetInstanceHandle
    然后传递给钩子,安装SetWindowsHookEx
      

  6.   

    用GetModuleHandle()替换
    SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)CallWndProc, AfxGetInstanceHandle(), 0);
    中的AfxGetInstanceHandle()试试。
      

  7.   

    GetModuleHandle好像也是不对。你还是干脆写个简单的DLL好像,不要用MFC的。DLLMAIN的第一个参数拿到这里来做HINSTANCE就可以了。