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

前面已经写过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
    评论
该错误是在uniapp开发微信小程序时出现,错误信息为"SyntaxError: Unexpected end of JSON input"。这个错误通常表示在JSON解析过程中遇到了意外的JSON输入结束。根据引用,可能是由于获取的JSON数据不完整或格式不正确导致的。根据引用和引用[3],可以看出在onLoad事件中使用了JSON.parse()方法解析JSON数据,因此可能是在解析JSON数据时出现了错误。为了解决这个问题,可以检查传递给JSON.parse()方法的JSON数据是否完整且符合JSON格式的要求。如果JSON数据不完整或格式不正确,可以尝试修复数据源,或者在解析之前进行适当的数据验证和处理。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [uniapp开发微信小程序Error in onLoad hook: “SyntaxError: Unexpected end of JSON input](https://blog.csdn.net/qq_45547094/article/details/126631498)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [uniapp 开发微信小程序出现这个 Error in onLoad hook: “SyntaxError: Unexpected end of JSON input](https://blog.csdn.net/weixin_46324536/article/details/128647911)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值