装配全局钩子

安装全局钩子?
  钩子安装成功,但总是进不去回调函数。代码如下:
  KeyBdRedll.h文件里:

  #include <Windows.h>

  #define MYLIB extern "C" _declspec(dllexport)

  MYLIB LRESULT CALLBACK ProcessKeyBoardMessage(int nCode,WPARAM wParam,LPARAM lParam);

  KeyBdRedll.cpp文件里:

  #include "stdafx.h"
  #include "KeyBdRedll.h"


  LRESULT CALLBACK ProcessKeyBoardMessage(int nCode,WPARAM wParam,LPARAM lParam)
  {
       MessageBox(NULL,L"收到消息",L"信息",MB_OK);
       return 0;
  }
  
  上面是动态库的代码,下面是测试代码,采用隐式链接:
  #include "stdafx.h"
  #include <Windows.h>
  #include "..\KeyBdRedll\KeyBdRedll.h"

  #pragma comment(lib,"KeyBdRedll.lib")


  int _tmain(int argc, _TCHAR* argv[])
 {
   HHOOK m_hook=SetWindowsHookEx(WH_GETMESSAGE,(HOOKPROC)ProcessKeyBoardMessage,GetModuleHandle(L"KeyBdRedll.dll"),0);
if (m_hook==NULL)
{
    int nCode=GetLastError();
}
while (1)
{
cout<<1<<endl;
}
return 0;
   }

  显示钩子安装成功,但是回调函数总是不调用,帮帮忙额~,操作系统win7,vs2008,已经用管理员权限运行。

------解决方案--------------------
不知道你从哪里看出来钩子安装成功了?全局钩子要求回调函数在一个DLL中,这个DLL不是本进程中的,而你是指向本进程的。
不用链接钩子函数所在的DLL,用LoadLibrary和GetProcessAddress获取dll句柄和函数地址。