如何判断窗口按钮?

如果判断同一个窗口不同的按钮变化?
我最近在写个软件安装器,想实现软件安装过程中自动化,但是在没法判断这个软件的进度条是否走完,没法知道软件是否到最后一步的完成按钮出现,试了很多办法都不管用;
比如,自动安装QQ,前面的都可以实现自定义点选,但是最后的完成安装按钮不知道怎么判断,就没法操作;
很多软件在执行安装的过程中都是标题不变,比如Firefox在现在安装,搜狗输入法安装等


帮助文件里面都是判断窗口的,根据窗口标题,但是这个案例窗口标题从始至终都不变…
求助

窗口控件什么的太麻烦就换个思路好了

试试这样行不?

https://wyagd001.github.io/zh-cn/docs/commands/ImageSearch.htm

不过其实用 Chocolatey 算了,虽然没有 QQ ,但是有 Tim(反正我也不用 QQ。

Firefox 这种国际知名软件当然也有了

知乎一下也有人讲解如何用命令行方式安装 QQ。

控件是否标准都不好说,就算搞定了一个,下一个可能也是不同的情况。你这是在找兼容所有控件的方法……且不说是否存在,如果对方不按着标准使用,比如使用图片替代按钮。总之可能的意外太多了,只是你还没遇到,所以以为只是眼下这一个难关。

倒是图像识别可能一力破万法,如果能再加上 OCR 的话,啧啧。

但这样就能都解决么?当然不能,你永远猜不透他们做了什么,会在什么奇怪的地方恶心到你。


上面只是从问题出发讨论思路。如果讨论问题本身。那这可能是一个伪需求,你打算为多少电脑服务,适配多少软件?这个适配的成本可不低啊。(做出来好像还真有不小的商业价值?!但用 AHK 做……会累哭

然后那些大型企业怎么维护电脑,怎么装软件,难道几百上千台电脑也这么装么?这个问题绝不会是你第一个提出来,也不可能是这几年才出现,那么……是不是重复造轮子,是不是已经有了巍峨耸立的亭台楼阁,你没看到?


讨论技术别钻牛角尖,每个角度都认真思考一下,觉得走不通也许不是真的走不通,可能是站的不够高。

明路在哪里……路在脚下。说到路在脚下我就想到……算了,篇幅有限,直接开花。

1 个赞

继续补充一波吧,免得因为服务态度被投诉……

AHK 从设计之初就是简单快捷的解决小问题,使用 Windows 提供 Api,简单的语法,虽然没有 UI,但是用代码居然能把某些事情简单的拨动开关一样。比如映射按键。

是的 AHK 可以做很多复杂的事情。

但是几乎每种编程语言都可以替代其他语言去做 对方的事情,为什么最终还是有这么多种语言存在?而不是被某一种完全替代掉?因为每一种都有它最擅长的方面。不擅长的不是不能做,是很费力。

AHK 解决小问题很好用,但是随着复杂度的增加,它会显得越来越不好用。因为它就没打算被用来做大型软件啊。

好,你的需求并不是大型软件。但是 AHK 只是让我们可以简单地去操作 Windows 的 Api,实现一些简单的流程。这是它擅长的。而你要做的是让它去操作没有使用 Windows 控件的软件界面……我能不能踩着我的滑板鞋周游世界?也不是不可以,就是会很累吧。如果没有十分特别的理由,还是火车轮船大飞机吧。

毕竟,前面面临的不只是路远,也许有高山,也许有河流,能过去吗?都能过去,但是每遇到一种情况就找对应的方法,未必值得。要不我们还是火车轮船大飞机吧。

AHK 就是个小脚本。滑板鞋,在平坦的地面上,让我们很畅快,很愉悦,别希望它太多。

外面的世界那么大。


不知道为什么忽然说这么多,可能是因为自己以前也没少钻牛角尖,而别人也没少这么劝我吧。

1 个赞

“我服……”本宝宝年轻的时候谁都不服!

(听起来很热血,现在喵喵喵喵,还是一只柔弱的小猫咪呀~

说一下你的蠢事,让我们乐一下:wink:

理论上说,方向没错。

然而现实不按着理论发展。

然后你拿着按理论设计的工具问我怎么对付不按理论发展的现实……

我他喵也说不清谁对谁错啊,要不你俩打一架,谁赢了算谁的。

我真心期待着你打赢现实,因为这是理想主义者的又一次胜利!(前一个倒下的好像是个戴眼镜的胖子

其实我也想说包管理器来着……包管理器是真的好用

顺便这老鼠怎么还无端六学的,大 势 所 趋 不 可 避 , 呼 伦 贝 尔 大 草 原

每一只猪没抑制住

说到猪……

我差不多快摸索到了

谁说去咸阳就得走秦直道?

丝绸之路总要有人走第一遭的

你怎么知道戴眼镜的胖子不会来个鲤鱼打挺?

祝你成功适配各种软件,加油~我看好你!

别啊,在聊会,我是虚心求教来了

If WinExist("无标题 - 记事本")
{
	WinActivate,无标题 - 记事本
	Sleep,5000
	!o
	Send,aa
}
else
{
	MsgBox,0,,窗口不存在
}

我用这个案例测试,sleep和alt+o都不执行,但send会执行,这是什么情况?
我用

;ControlSend,button1,腾讯QQ安装向导,安装QQ浏览器
ControlClick,x120 y239,腾讯QQ安装向导,安装QQ浏览器

鼠标也不动,我已经用管理员运行这个编辑器了

我不会啊……

我曾经想用 VBS 征服世界,直到我面临起床的难题

哥们搞定了,

快,打钱

Loop,30
{
	Sleep,3000
	If WinExist("腾讯QQ安装向导")
	{
	WinActivate,腾讯QQ安装向导
	Sleep,1000
	MouseClick,left,282,357
	}
	else
	{
		break
	}
}

真赞!

建议换个电脑(不同分辨率,不同缩放比)试试

至于给我打钱……不要不要,怎么能这样呢,你也太客气了,我二维码在论坛就有,你别找了,我估计你也找不到,找到也不会扫的,扫了也不可能真付款啊,意思意思得啦,三百五百的,太少了你也拿不出手不是呢。

我知道你怀疑我那个坐标,但这事我老早就考虑到前面了,相对值(relative)

给你打钱让你积攒蛋白质然后出去挥洒?

也是,不挥洒就没现在这烦恼了。唉,年轻啊,冲动啊。害的我这老身板还得起早贪黑苦口婆心的解释……

我觉得你骨骼惊奇,思维活跃,口齿伶俐,我发了一个东北题材的剧本,你适合里面的主角,匹配度简直量身定做,叫<<老瘪犊子>>有没有兴趣?:rofl: