博文

非Dll,设置hook(2009-11-09 13:30:00)

摘要:回调函数必须是静态函数或全局函数。 1 .如果你把它定义为类的成员函数,则应该在声明的时候加上static。 如:static LRESULT CALLBACK MouseProc(int nCode,WPARAM wParam,LPARAM lParam); 而且在函数的实现部分,即.cpp文件中,函数名前面应加上类名。 如:LRESULT CALLBACK CSettingDlg::MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
       {
         return 1;
       } 函数的调用语句示例如下:SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId()); 2.如果你把回调函数定义为全局函数 则只要把函数实现部分放在调用之前即可。头文件中不需要声明。函数名前没有类名。 如: / /函数现实部分 LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
return 1;
} / /调用函数
void CSettingDlg::OnStart()
{    SetWindowsHookEx(WH_MOUSE,MouseProc,NULL,GetCurrentThreadId());

}......

阅读全文(2779) | 评论:0