鼠标键盘模拟 非公开

分类
点赞
暂无
更多信息
分享人 球佬是地表最强程序员!
分享时间 2024-08-26 11:21
最后更新 24天6小时前
修订版本 2
子程序大小 46.2 KB
Quicker版本 1.43.57.0

本子程序基于或参考如下动作开发

https://getquicker.net/sharedaction?code=fda7432a-76f5-4d47-a573-08dcc5002795

介绍

可用于后台鼠标键盘模拟. 本程序为大漠插件封装给Quicker的 使用时需要开启着核心文件才可以使用本动作


介绍:

第一次使用时需要下载核心文件. 

动作运行时,会开启核心程序,一个命令行窗口. 窗口不可关闭. 可以手动最小化. 

如果一直运行多个动作. 命令行窗口可以一直不关闭. 命令行窗口限制了只能打开一个

此动作和老大的官方动作区别为,此动作可以绑定到后台窗口. 绑定后几乎所有的动作都是后台窗口生效的

绑定并且测试成功后, 窗口最小化也依然可以执行对应键鼠找图等操作

但是不是所有的窗口都可以绑定生效.具体需要先进行绑定类型测试


封装思路:

本来想着是否可以通过QK的c#脚本.来动态调用Com组件. 但是实际发现.大漠插件每次需要单独去注册一遍.需要联网注册,这个就比较费时间.分摊到每个动作上,会特别耽误时间. 所以单独用c#写了一个监听程序. 监听程序开启执行注册大漠插件的操作, 然后QK用tcp通信,给监听程序发消息. 根据不同的消息. 监听程序来执行对应的大漠命令.这样只要开始的时候绑定一次窗口,后续就不需要再次绑定,也节省了绑定的时间.  但是这种方案需要一直开启着这个命令行程序. 动作每次检测这个程序是否在运行中, 不在运行就会拉取打开这个监听程序. 同样,只要监听程序不关. 后续别的动作依然可以和这个程序通信.绑定 依然是之前绑定的窗口. 


使用方式:

如果是前台操作.不用填写窗口句柄

如果需要后台. 需要填写窗口句柄. 或者使用"绑定"类型动作.先绑定窗口.  因为绑定操作本身需要一些毫秒的时间. 不要每个动作都填写窗口句柄. 一套动作只要最前面的一个动作里有绑定或者填写窗口句柄就可以

绑定成功后,后续的全部动作都为后台操作.

具体封装功能:

鼠标移动后点击鼠标左键

鼠标移动到

鼠标相对移动

鼠标左键点击

鼠标右键点击

鼠标左键按下

鼠标右键按下

鼠标左键弹起

鼠标右键弹起

键盘按键

键盘按下

键盘弹起

按下鼠标中键

按住鼠标中键

弹起鼠标中键

鼠标滚动

发送剪贴板内容

向指定窗口发送文本数据

向指定窗口发送文本数据2

向绑定的窗口发送文本数据

依次按顺序按下其中的字符

查找窗口句柄

设置窗口状态

移动到位图位置 (可以设置等待时间)

左键点击全部位图 (可以设置等待时间)

移动到位图位置-无限等待版 (这个可以按F11结束等待)

左键点击全部位图--无限等待版 (这个可以按F11结束等待)

二组合键

三组合键

四组合键

保存鼠标位置

恢复鼠标位置

延时

绑定

解绑


附录:

绑定类型: 这个可以根据下面自由搭配. 默认提供了一些绑定组合可以尝试更改

屏幕找图方式:

"normal" : 正常模式,平常我们用的前台截屏模式

"gdi" : gdi模式,用于窗口采用GDI方式刷新时. 此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。 

"gdi2" : gdi2模式,此模式兼容性较强,但是速度比gdi模式要慢许多,如果gdi模式发现后台不刷新时,可以考虑用gdi2模式.

"dx2" : dx2模式,用于窗口采用dx模式刷新,如果dx方式会出现窗口进程崩溃的状况,可以考虑采用这种.采用这种方式要保证窗口有一部分在屏幕外.win7 win8或者vista不需要移动也可后台. 此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。 

"dx3" : dx3模式,同dx2模式,但是如果发现有些窗口后台不刷新时,可以考虑用dx3模式,此模式比dx2模式慢许多. 此模式占用CPU较大. 参考SetAero. win10以上系统使用此模式,如果截图失败,尝试把目标程序重新开启再试试。

dx模式,用于窗口采用dx模式刷新,取值可以是以下任意组合,组合采用"|"符号进行连接. 支持BindWindow中的缩写模式. 比如dx代表" dx.graphic.2d| dx.graphic.3d"

1. "dx.graphic.2d"  2d窗口的dx图色模式  

2. "dx.graphic.2d.2"  2d窗口的dx图色模式  是dx.graphic.2d的增强模式.兼容性更好.

3. "dx.graphic.3d"  3d窗口的dx图色模式, 

4. "dx.graphic.3d.8"  3d窗口的dx8图色模式,  此模式对64位进程无效.

5. "dx.graphic.opengl"  3d窗口的opengl图色模式,极少数窗口采用opengl引擎刷新. 此图色模式速度可能较慢. 

6. "dx.graphic.opengl.esv2"  3d窗口的opengl_esv2图色模式,极少数窗口采用opengl引擎刷新. 此图色模式速度可能较慢.

7. "dx.graphic.3d.10plus"  3d窗口的dx10 dx11图色模式


鼠标模式:

mouse 字符串: 鼠标仿真模式 取值有以下几种

"normal" : 正常模式,平常我们用的前台鼠标模式

"windows": Windows模式,采取模拟windows消息方式 同按键的后台插件.

"windows3": Windows3模式,采取模拟windows消息方式,可以支持有多个子窗口的窗口后台

dx模式,取值可以是以下任意组合. 组合采用"|"符号进行连接. 支持BindWindow中的缩写模式,比如windows2代表"dx.mouse.position.lock.api|dx.mouse.position.lock.message|dx.mouse.state.message"

1. "dx.mouse.position.lock.api"  此模式表示通过封锁系统API,来锁定鼠标位置.

2. "dx.mouse.position.lock.message" 此模式表示通过封锁系统消息,来锁定鼠标位置.

3. "dx.mouse.focus.input.api" 此模式表示通过封锁系统API来锁定鼠标输入焦点.

4. "dx.mouse.focus.input.message"此模式表示通过封锁系统消息来锁定鼠标输入焦点.

5. "dx.mouse.clip.lock.api" 此模式表示通过封锁系统API来锁定刷新区域。注意,使用这个模式,在绑定前,必须要让窗口完全显示出来.

6. "dx.mouse.input.lock.api" 此模式表示通过封锁系统API来锁定鼠标输入接口.

7. "dx.mouse.state.api" 此模式表示通过封锁系统API来锁定鼠标输入状态.

8. "dx.mouse.state.message" 此模式表示通过封锁系统消息来锁定鼠标输入状态.

9. "dx.mouse.api"  此模式表示通过封锁系统API来模拟dx鼠标输入.

10. "dx.mouse.cursor"  开启此模式,可以后台获取鼠标特征码. 

11. "dx.mouse.raw.input"  有些窗口需要这个才可以正常操作鼠标. 

12. "dx.mouse.input.lock.api2"  部分窗口在后台操作时,前台鼠标会移动,需要这个属性.

13. "dx.mouse.input.lock.api3"  部分窗口在后台操作时,前台鼠标会移动,需要这个属性. 


键盘模式:

"normal" : 正常模式,平常我们用的前台键盘模式

"windows": Windows模式,采取模拟windows消息方式 同按键的后台插件.

dx模式,取值可以是以下任意组合. 组合采用"|"符号进行连接. 支持BindWindow中的缩写模式.比如dx代表" dx.public.active.api|dx.public.active.message| dx.keypad.state.api|dx.keypad.api|dx.keypad.input.lock.api"

1. "dx.keypad.input.lock.api" 此模式表示通过封锁系统API来锁定键盘输入接口.

2. "dx.keypad.state.api" 此模式表示通过封锁系统API来锁定键盘输入状态.

3. "dx.keypad.api" 此模式表示通过封锁系统API来模拟dx键盘输入. 

4. "dx.keypad.raw.input"  有些窗口需要这个才可以正常操作键盘.




子程序的参数

输入
类型 List
启用窗口句柄 绑定窗口后,全部动作都为后台动作 Text
窗口绑定方式 屏幕找图方式,鼠标模式,键盘模式 Text
窗口句柄 要绑定的窗口句柄. 只能同时绑定一个窗口, 绑定后一直有效直到解绑,可以点击后面图标选取窗口 Text
XY设置方式 List
x Text
y Text
字符串描述的键码 比如 enter F1 B Text
发送文本 Text
发送按键文本 比如 Quicker 输入回车可以用\n 例如 Quicker\nNB! Text
窗口设置参数 0:关闭指定窗口 1:激活指定窗口 2:最小化指定窗口,但不激活 3:最小化指定窗口,并释放内存,但同时也会激活窗口: 4:最大化指定窗口,同时激活窗口: 5:恢复指定窗口 ,但不激活 6:隐藏指定窗口 7:显示指定窗口 8:置顶指定窗口 9:取消置顶指定窗口 10:禁止指定窗口 11:取消禁止指定窗口 12:恢复并激活指定窗口 13:强制结束窗口所在进程: 14:闪烁指定的窗口 15:使指定的窗口获取输入焦点 Text
延时 毫秒 Text
坐标范围 0,0,2000,2000 左上x,y 右下x,y Text
图片名 可以是多个图片,比如"test.bmp|test2.bmp|test3.bmp" Text
相似度 取值范围0.1-1.0 Text
查找方向 0: 从左到右,从上到下 1: 从左到右,从下到上 2: 从右到左,从上到下 3: 从右到左, 从下到上 Text
定位位置 Text
查找的标题 模糊查找,查找后返回找到的第一个窗口的句柄 Text
功能键1 输入比如 ctrl shift Text
功能键2 输入比如 ctrl shift Text
功能键3 输入比如 ctrl shift Text
非功能键 输入比如 c v Text
最大等待时间 找不到图的最大等待时间 单位秒 0为不等待 负值为无限等待 无限等待版,会占用F11快捷键,按下快捷键后直接退出等待 Text
毫秒 Text
滚动方向 Text
坐标 格式为 x,y 如: 100,200 Text
移动后操作 移动位置后,需要执行的操作 Text
毫秒 Text
动作执行模式 阻塞会等待核心进程完成后,Qk这边才会继续.会卡QK界面. 不阻塞是不等待核心进程完成就可以执行下一个QK动作. 动作太快会造成核心文件那边执行顺序错乱 Text
发送给全部子窗口 可以把对应操作,发送给全部的子窗口.比如文本窗口,文字要发送给内容窗口,顶级窗口不会接收文字的 Text
输出
输出窗口句柄 返回找到的第一个窗口句柄 Text

最近更新

修订版本 更新时间 更新说明
2 24天6小时前 更新程序
1 2024-08-28 21:12 第一完整版分享
0 2024-08-26 11:21

最近讨论

暂无讨论