后台键鼠找图 公开

分类
点赞
走云云力 1 人点赞了这个动作。
更多信息
分享人 球佬是地表最强程序员!
分享时间 2024-09-04 21:57
最后更新 28天13小时前
修订版本 7
子程序大小 145.9 KB
Quicker版本 1.43.57.0

介绍

发送消息,来实现后台键盘,后台鼠标,后台找图

聚合三位大佬的动作:

https://getquicker.net/Sharedaction?code=eaf2eb06-ed8d-4426-8a62-08db25feb013

https://getquicker.net/subprogram?id=cc901dbb-0752-4209-d23c-08d7b1f3a674&version=1

https://getquicker.net/Sharedaction?code=522ebcc1-893d-4440-f3d0-08da7aa8cf54&fromMyShare=True

跪谢以上大佬!!!

下面是教程.新人没有接触过后台的请务必看完.否则自己很难摸索成功. 


这里针对于后台相关的说明:

总结海绵大佬的意思(如果有错误,请指正):

很多窗口是Windows下面,可以通过Windows发消息给窗口. 这样的窗口是支持后台相关操作的. 

有些窗口的消息接口是自己做的.  没有经过Windows.比如很多游戏. 这样你用Windows发送消息,这种窗口是接收不到消息的. 所以这里的后台是无法使用的.

这里可能是大部分游戏,可能不支持这边的后台操作

还有一些特殊的窗口. 比如说chrome浏览器. NTQQ 这种, 不支持这个后台消息.

另外一点是. 后台发消息需要更精准的找到对应的窗口句柄. 为了好理解.我举两个例子.加入一个界面里有两个编辑框分别都有自己的句柄. 那么你要是给编辑框1按键,需要填写编辑框1的窗口句柄. 你要给编辑框2后台按键.就需要填写编辑框2的窗口句柄. 这时假如你只获取了整个窗口的句柄. 那么你后台按键会没反应..因为这个句柄可能是标题栏.而标题栏不接受这个按键..  这时候, 你需要去测试,哪个子窗口可以接受点击或者按键

然后记录这个窗口的类名和标题. 比如还是上述编辑框1.他的标题可能是 编辑框1 类名是 Edit  这个应该很好理解. 就是编辑框类型,命名为 编辑框1 的控件. 这个时候你用那种搜索窗口句柄的功能. 可以填写标题栏和类型那种. 把两个都输入上去.这样得出来搜索到的句柄 才可能是精准的子句柄

还有一点 关于坐标. 这里的坐标 需要填写窗口内的坐标. 我建议你把窗口先移动到左上角的0,0 然后获取他的坐标. 这样你窗口坐标和屏幕坐标重合,你随便获取都不会有太大错误. 说这个主要是避免这种情况. 我观察很多人是这样操作的. 他随便找个在中间的窗口. 去获取他窗口的坐标. 比如他点击的窗口内的10,10 但是因为获取的那个动作是屏幕坐标 .其实输出了一个  60,60的屏幕坐标. 那么他把这个60,60输入到动作里,就会特别的错误...鼠标就偏移飞了..

这里另外推荐一个动作  这个动作点击对应的坐标可以直接获取窗口相对坐标. 爽歪歪:

鼠标输入助手 - by CPU风扇 - 动作信息 - Quicker (getquicker.net)

因为后台操作是个麻烦事. 你得先判断对应的app是不是支持后台. 然后判断子窗口句柄用哪个. 所以不建议新手去直接使用. 如果是新手.推荐先用老大的基础动作.先做一套前台的鼠标动作. 做成熟了.有经验了. 再去考虑后台. 毕竟后台不直观


这里的子程序最后添加了个显示坐标的功能. 建议可以测试的时候打开这个功能.这个可以显示你的图是否找到了. 和显示找到的图的窗口坐标和屏幕坐标. 还会显示这个是否有子窗口 ,以便你去判断是否没有选对窗口. 


2025-03-04

说一些后台找图会遇到的问题:

有伙伴经常反馈说后台找图点击没有效果

我刚才测试了一下这个东西. 结论可能是这样的:

找到的图的位置,可能是个按钮.

后台找图是无视子窗口句柄的

后台点击,是区分子窗口句柄的

比如我有个界面, 界面的句柄是1234

然后这个按钮有单独的句柄 ,比如是7890

一开始找图,肯定是以界面的标题做搜索,或者选中界面的窗口句柄,  这时因为找图是可以不区分句柄的,所以可以找到对于的按钮位置,会返回一个坐标. 这个坐标在1234的句柄上

而因为后台鼠标点击是区分句柄的. 你可以想象成成ps里. 界面是图层1, 按钮是图层2 . 这时候在句柄1234上面获取的坐标, 后台鼠标只会在界面的图层1(句柄1234)上疯狂点击, 是点击不到图层2的按钮7890(句柄)的.

所以一般思路是. 如果能找到对于图, 需要把窗口句柄和窗口坐标都改成按钮的. 

注意是坐标和句柄都要转换. 否则比如按钮7890的坐标在界面1234的(10,10)上. 即使转换成按钮的句柄,那么按钮的(10,10)就跑到按钮外面去了

所以这个比较麻烦,对于这种标准的Windows窗口

那什么不麻烦呢?

游戏!

游戏因为是整体的一个窗口. 不存在Windows那种独立的按钮. 所以游戏可以直接通过找图后后台点击鼠标

但是Windows的标准窗口. 可能每一个按钮,控件都有独立的句柄. 所以后台点击,必须指定到这个按钮的句柄上

这个基础讲解可以看本子程序的视频教程.里面有提到过这个后台鼠标


对于这种标准的Windows窗口怎么办呢?

比如这种找按钮的情况下应该怎么办呢?  这种情况 不要找图, 需要用到子程序里的"取窗口句柄",去搜索按钮的标题. 比如这个按钮的字是"确定" 那么用我这个子程序里的"取窗口句柄" 窗口标题搜索"确定"就可以返回窗口句柄. 然后用后台鼠标去点击这个窗口坐标即可.

或者用"取窗口句柄-取父子窗口"这个是什么意思呢.比如你有俩窗口,都有确定, 那么就可以搜索一个其中的父窗口,然后在这个父窗口里,再搜索"确定"即可

注意的是我这个子程序的"取窗口句柄"是特意写的遍历全部子控件的. 官方的同名功能并没有这个效果. 



子程序的参数

输入
类型 List
窗口/控件句柄: 注意,后台句柄区分父窗口和子窗口. 请精准定位到要操作的窗口.否则默认的父窗口可能只有工具栏,窗口句柄不会起作用 Number
要找的图 图片位置: Any
设置坐标: 以当前窗口/控件的所在坐标位置为起点,设置要点击(或其他操作)的内部坐标。格式为:x,y Text
按键名 请在右侧按键输入 Text
键盘触发方式 因为按键是发送按下和弹起, 可能有的app会触发两次 所以这个根据实际触发情况来选择 List
偏移X 鼠标偏移,比如找图点在10,10,偏移为5,5 那么鼠标会移动到15,15 Number
偏移Y 鼠标偏移,比如找图点在10,10,偏移为5,5 那么鼠标会移动到15,15 Number
触发方式: 选择触发方式 Number
鼠标按键 鼠标按键 Number
重试次数 找不到图的重试次数,间隔为300ms Number
显示坐标位置 弹窗输出坐标点的位置,同时提供子窗口句柄做参考 Boolean
xy坐标 xy的坐标 例如 10,10,需要你点击右侧的准星.定位到你要点击的地方.来获取窗口句柄和类名.然后记录下来 Text
类名 要查找的类名,可空,区分大小写 Text
窗口标题 要查找的窗口标题,模糊搜索.可空 Text
父窗口标题 Text
父窗口类名 Text
子窗口标题 Text
子窗口类名 Text
输出
输出窗口坐标 输出窗口内的坐标 例如 0,0 List
输出屏幕坐标 输出屏幕坐标,非窗口坐标 List
是否找到图 Boolean
坐标位置的窗口句柄 输出句柄 Integer
坐标位置的窗口类名 输出类名 Text
输出窗口句柄 返回的窗口句柄. 未找到的话返回0 Number
最终窗口句柄 Number

最近更新

修订版本 更新时间 更新说明
7 28天13小时前 补上了缺失的OpenCvSharpExtern.dll文件
6 2024-12-02 20:36 更新下载地址
5 2024-09-18 23:58 增加取窗口句柄和辅助找点击位置

最近讨论