第一步:在App类中定义钩子
class CTestApp : public CWinApp { public: CTestApp(); HHOOK m_hHook;
第二步:构造函数中初始化成员变量
CTestApp::CTestApp():m_hHook(NULL),m_dlg(NULL) { // TODO: 在此处添加构造代码, // 将所有重要的初始化放置在 InitInstance 中 }
第三步:定义钩子函数
class CTestApp : public CWinApp { public: CTestApp(); HHOOK m_hHook; // 重写 public: virtual BOOL InitInstance(); DECLARE_MESSAGE_MAP() virtual int ExitInstance(); static LRESULT CALLBACK GetMessageProc(int nCode, WPARAM wParam, LPARAM lParam); };LRESULT CALLBACK CTestApp::GetMessageProc(int nCode, WPARAM wParam, LPARAM lParam) { AFX_MANAGE_STATE(AfxGetStaticModuleState( )); LPMSG lpMsg = (LPMSG)lParam; //这里可以查看消息 lpMsg->message //也可以过滤后调入PreTranslateMessage AfxGetApp()->PreTranslateMessage(lpMsg); return CallNextHookEx(theApp.