SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)HookFun,(HINSTANCE)AfxGetApp()->m_hInstance,0);(HINSTANCE)AfxGetApp()->m_hInstance 该如何改?
程序可能运行多个实例,需要各自hook各自的消息
谢谢

解决方案 »

  1.   

    你要多个实例,那就每个实例都加载这个hook dll,然后设置 (HINSTANCE)AfxGetApp()->m_hInstance 当前进程的句柄就可以了
      

  2.   

    我的代码是 exe内进行hook 
    在exe内安装的钩子void CTextDlg::OnHook() 
    {
    // TODO: Add extra validation here
    hkb =SetWindowsHookEx(WH_KEYBOARD,(HOOKPROC)HookFun,(HINSTANCE)AfxGetApp()->m_hInstance,0);//(HINSTANCE)GetModuleHandle(NULL)
    }LRESULT CALLBACK HookFun(int nCode,WPARAM wParam,LPARAM lParam) 

    switch(wParam)
    {
              .......
            } LRESULT RetVal = CallNextHookEx(hkb, nCode, wParam, lParam );
    return  RetVal;
    }发觉一运行 本程序可以正确相应键盘消息 执行回调函数
    但是失去焦点后 不能正确处理消息 其他运行的程序马上出错。
    explore.exe 都要重启。
    我想肯定是 在失去焦点后没自动 卸载钩子 或者 hook的对象不正确。