调用API来进行监视鼠标状态——判断鼠标哪个键按下与放开
1、新建一个“易语言”窗口程序
2、API命令可下载易语言API编程助手进行查询
我们需要的API命令有
CallNextHookEx——呼叫下一钩子
SetWindowsHookExA——安装系统钩子
UnhookWindowsHookEx——卸载系统钩子
不同翻译的翻译结果也不同,大致了解下就可以了
3、还有一个API命令
GetModuleHandleA——取实例句柄
用来取窗口句柄的
4、对了,API的参数类型要改下,DLL命令如下:
.版本 2 .DLL命令 安装系统钩子, 整数型, "user32.dll", "SetWindowsHookExA", , , SetWindowsHookEx .参数 钩子类型, 整数型, , idHook .参数 回调函数地址, 子程序指针, , lpfn .参数 实例句柄, 整数型, , hmod .参数 线程ID, 整数型, , dwThreadId .DLL命令 取实例句柄, 整数型, , "GetModuleHandleA", , , .参数 程序名, 整数型 .DLL命令 卸载系统钩子, 整数型, "user32.dll", "UnhookWindowsHookEx", , , UnhookWindowsHookEx .参数 钩子句柄, 整数型, , hHook .DLL命令 呼叫下一钩子, 整数型, "user32.dll", "CallNextHookEx", , , CallNextHookEx .参数 钩子句柄, 整数型, , hHook .参数 代码值, 整数型, , ncode .参数 附加参数1, 整数型, , wParam .参数 附加参数2, 整数型, 传址, lParam
直接复制然后粘贴就可以了,系统会自动写入DLL命令的
5、然后就可以输入代码了
变量都是中文的,这样应该就可以明白变量的含义了
代码如下:
.版本 2 .支持库 spec .程序集 窗口程序集_启动窗口 .子程序 启动监视 钩子句柄 = 到整数 (安装系统钩子 (14, &钩子处理, 取实例句柄 (0), 0)) ' 安装系统钩子——安装和卸载和注册热键与注销热键相似的,只是类型不同 .子程序 结束监视 .如果真 (钩子句柄 ≠ 0) ' 检测钩子句柄——如果不检测直接卸载可能会出现问题 卸载系统钩子 (钩子句柄) .如果真结束 .子程序 钩子处理, 整数型 .参数 代码值, 整数型 .参数 参数一, 整数型 .参数 参数二, 整数型 ' 参数一 也就是 键代码——不过是API里面的,不能直接用 .判断开始 (参数一 = 519) ' 鼠标中键按下的参数 调试输出 (“中键按下”) .判断 (参数一 = 520) ' 鼠标中键放开的参数 调试输出 (“中键放开”) .判断 (参数一 = 513) ' 鼠标左键按下的参数 调试输出 (“左键按下”) .判断 (参数一 = 514) ' 鼠标左键放开的参数 调试输出 (“左键放开”) .判断 (参数一 = 516) ' 鼠标右键按下的参数 调试输出 (“右键按下”) .判断 (参数一 = 517) ' 鼠标右键放开的参数 调试输出 (“右键放开”) .默认 .判断结束 返回 (呼叫下一钩子 (钩子句柄, 代码值, 参数一, 参数二)) ' 返回值——用来返回,不然子程序 钩子处理 没有返回值 .子程序 __启动窗口_创建完毕 启动监视 () ' 调用子程序 启动监视 .子程序 __启动窗口_可否被关闭, 逻辑型 结束监视 () ' 调用子程序 结束监视
6、然后F5运行看看效果
如果360出现安全警告,直接点击允许就可以了
刚运行的时候可能会有点卡,那是在安装系统钩子,等会就不卡了
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。