VC进程相关的学习(二)(钩子基础)

Windows是建立在事件驱动机制上的,也就是所有消息的传递都是基于事件的,钩子就是截取这些消息进行处理。

 

钩子的种类:线程钩子和系统钩子。
     线程钩子只处理本线程的事件。
     系统钩子可以处理系统级的事件。

 

钩子的用法:
    系统钩子暂时用不到,下面是线程钩子的使用
    定义钩子函数,不同钩子的回调函数是不同的,具体按SetWindowHookEx的F1即可

     LRESULT CALLBACK MouseProc(int nCode, WPARAM wparam, LPARAM lParam) { if(wparam == WM_MOUSEMOVE || wparam == WM_NCMOUSEMOVE || MyHook::instance().Hooks[nCode]._bActive) { POINT point = ((MOUSEHOOKSTRUCT *)lParam)->pt; point.x = point.x; point.y = point.y; } return CallNextHookEx(hook, nCode, wparam, lParam); }

     安装钩子

     HHOOK hook = SetWindowsHookEx(idHook, lpfn, NULL, GetCurrentThreadId());

     卸载钩子

     UnhookWindowsHookEx(hook);

你可能感兴趣的:(VC进程相关的学习(二)(钩子基础))