Windows Hook经验总结之三:Mouse Hook实践

前面已经写过API注入的Hook应用场景,本文则展示Hook的另一个应用场景:安装WH_MOUSE钩子监控mouse事件(keyboard等类似)。
摘要由CSDN通过智能技术生成

前面已经写过API注入的Hook应用场景,本文则展示Hook的另一个应用场景:监控mouse事件(包括keyboard等输入事件)。

问题背景:

 一个工具多个版本(比如V1,V2)根据输入文件动态切换,要求V1能切到V2,V2也能切回V1。
 但切换控制代码只能在最新版(比如V2)上添加,V1已发布且稳定不能做更改。

解决思路:

V2上响应输入button事件时判断是否需要切到V1;
如果不切,则显示V2主界面;
如果要切,则隐藏V2界面、创建V1进程、安装WH_MOUSE钩子,并创建线程监控V1的运行状况(主要是mouse输入事件);
Mouse钩子运行后检查V1中鼠标输入条件是否触发文件选择button,如果触发则终止V1并激活显示V2(结束mouse hook);
同时,V1激活时用户如果关闭V1,则必须hook到此事件并关闭V2(即退出工具)

具体实现:

直接上代码Hook.dll

/*自定义结构,V2与V1的数据交换*/
typedef struct 
{
    DWORD   HookPID;/*V1进程pid*/
    BOOL    HookActived;/*hook是否有效*/
    BOOL    MouseDown;/*mouse是否被按下*/
    RECT    Client;  /*V1待hook的button坐标区域*/
}HOOK_SHARED_MEM;

/*安装钩子*/
HOOK    WINAPI  InstallHook(int nID, HINSTANCE hInstance, LPVOID pAppSharedMem)
{
    HANDLE hMemMap = ::Ope
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值