利用Qt与windowsApi实现按键连按与鼠标连点功能,可以后台启动或关闭
前言
发现某些游戏好像把windows队列消息屏蔽了导致这个小工具失效,如果有大佬能指点我一下就好了谢谢各位!!!
功能很简单,就是监听全局按键,碰到特定的按键(这里是F1F2和F5F6)就从UI上面获取参数,创建线程启动按键。(写这篇文章才发现,都是其他大佬的东西,自己制作了UI,惭愧。。。)
一、使用的Api
按键连按和鼠标连点需要的方法有三个,分别是全局按键拦截、模拟键盘按下、模拟鼠标点击,然后在线程里面处理连按和连点。
Qt中的模拟键盘按下方法只能是焦点在程序中才能拦截,不可以拦截全局,这时候就需要使用windowsapi了。
监听全局按键方法:SetWindowsHookExW
具体参考Qt实现全局键盘事件监听器-Windows
这位大佬应该也是实现了linux下的监听,不过我只做了windows下的编译。
模拟键盘按下方法:keybd_event
具体参考keybd_event——c++模拟键盘按键
模拟鼠标点击方法:mouse_event
具体参考windowsAPI调用,实现鼠标自动点击
二、使用步骤
1.模拟键盘按下
代码如下(示例):
void ThreadHandle::startKeyThread(const QList<Qt::Key> &argList, int keyMode, int mesc)
{
if(argList.size() == 0)
return;
while (m_keyFlag) {
LKey_CODE vkCode = LKey_UNKNOWN;
switch (keyMode) {
case