鼠标钩子WH

    xiaoxiao2021-03-25  18

    一、鼠标钩子类型有两个,一个是WH_MOUSE,另一个是WH_MOUSE_LL,其中WH_MOUSE只能监控钩子所在模块的鼠标事件,而WH_MOUSE_LL可以截获整个系统所有模块的鼠标事件。 因为我们要获取整个系统的鼠标事件,所以我们用WH_MOUSE_LL,并用WIN32汇编编写,其中界面和思路参考了http://blog.csdn.net/friendan/article/details/12168273

    二、鼠标钩子只能存在Dll中,所以我们需要创建一个DLL文件,用于安装钩子和卸载钩子,并把鼠标信息发送给主程序,下面是DLL文件部分代码,有钩子的安装

    InstallHook proc _hWnd,_dwMessage push _hWnd pop hWnd;保存主程序的窗口句柄 push _dwMessage pop dwMessage;保存要发送给主程序的消息类型 invoke SetWindowsHookEx,WH_MOUSE_LL,\ addr HookProc,hInstance,NULL mov hHook,eax ret InstallHook endp

    钩子卸载

    UninstallHook proc invoke UnhookWindowsHookEx,hHook ret UninstallHook endp

    钩子处理过程比较简单,直接发送自定义的消息给主程序

    HookProc proc _dwCode,_wParam,_lParam local @szKeyState[256]:byte invoke CallNextHookEx,hHook,_dwCode,\ _wParam,_lParam invoke SendMessage,hWnd,dwMessage,\ _wParam,_lParam xor eax,eax ret HookProc endp

    三、主程序采用动态装入DLL方式加载生成的DLL文件,并在窗口过程处理收到鼠标信息,用列表控件显示收到的wParam,lParam值,鼠标消息、鼠标坐标

    具体完整的代码查看 MouseHook完整源码下载

    转载请注明原文地址: https://ju.6miu.com/read-200008.html

    最新回复(0)