找回密码
 加入
搜索
楼主: xing999999

[AU3基础] [已解决]窗口探测器无法探测到控件,要怎么办?

 火.. [复制链接]
 楼主| 发表于 2015-12-14 15:02:40 | 显示全部楼层
回复 14# afan


    确实没什么真正的进展,不过根据斑竹的提示,我搜索“自动化操作(安装脚本)”到是搜索不到,搜索”自动化操作“到是搜索到一堆,现在正准备好好查阅。非常感谢版主。
 楼主| 发表于 2015-12-14 15:13:31 | 显示全部楼层
QQ管家版本号PCMgr_Setup_11_1_16908_217,测试代码如下:
xlj310 发表于 2015-12-14 15:00



    非常感谢,我仔细研究下。谢谢了。
 楼主| 发表于 2015-12-14 15:21:11 | 显示全部楼层
QQ管家版本号PCMgr_Setup_11_1_16908_217,测试代码如下:
xlj310 发表于 2015-12-14 15:00



竟然最后等待期间是用等待获取宽度和高度来解决。。。这。。牛。。

我有个问题,在你wend后的电脑管家新功能那里,为什么要获取鼠标位置呢?如果要取消这些勾直接controlclick或controlcommand不好吗?
发表于 2015-12-14 16:02:17 | 显示全部楼层
以前为了混等级写了个酷狗安装脚本,获取安装gui某个位置的颜色来判断。
 楼主| 发表于 2015-12-14 16:26:08 | 显示全部楼层
本帖最后由 xing999999 于 2015-12-14 16:27 编辑

经过详细的来回的测试,最后我觉得还是以下的代码最为稳定。多谢XLJ310,非常感谢你。我以前从没碰过这方面的东西,所以自己摸索起来比较头疼。看了你的代码,我才知道还可以根据窗口大小来判断。。。不说了,上代码,有标明是xlj310的,和我修改的。
;存在安装进程,直接结束,方便调试
If ProcessExists("QQPCMgr.exe") Then ProcessClose("QQPCMgr.exe")
;运行程序-XLJ310
Run("QQPCMgr.exe")

$title = "电脑管家安装"
$text = "继续安装需要关闭实时防护,是否要继续?"

;存在QQ管家实时防护进程,说明已经安装了。弹出的这个窗口很难操控,有时成功,有时不成功,干脆弹出提示要求手点!
If ProcessExists("QQPCRTP.exe") Then
        TrayTip('QQ实时防护已经开启', "QQ管家实时防护开启,很多操作弄不了。" & @CRLF & "请手动点是,10秒内不点脚本退出!", 1)
        ;等待窗口出现开始计时
        WinWait($title, $text)
EndIf
$title = "电脑管家 安装向导"
$text = $title
;以上都是-XLJ310所写
;10秒内不出窗口,就超时,下面if就不成立-XLJ310
If WinWait($title, $text, 10) Then
        ;清空上面的traytip提示。-XLJ310
        TrayTip("清空提示", "", 1)

        ;需要修改路径,可以启用下面的代码-XLJ310
;~ ControlClick($title,$text,"ATL:005138B01","",1,59,651)
;~ Sleep(500)
;~ ControlSetText($title,$text,"CEagleEdit1","C:\Program Files (x86)\Tencent\QQPCMgr")

        ;点击 带我飞 装逼!-XLJ310
;~ ControlClick($title, $text, "ATL:005138B01", "", 1, 444, 490)
        ;确实很不稳定,我的虚拟机的分辨率是1440*900,运行代码直接就停在这里了。所以我改成了输送快捷键-xing999999
        Send("{ENTER}")

        While 1
                Sleep(500)
                ;不断的获取QQ管家安装窗口的位置和大小,如果大小为370*600时,表示安装完成-XLJ310
                $WinPos = WinGetPos($title, $text)
                If IsArray($WinPos) Then
                        ;宽度为370,高度为600时-XLJ310
                        If $WinPos[2] = 370 And $WinPos[3] = 600 Then ExitLoop
                EndIf
        WEnd
        Sleep(100);少量的等待,以防电脑卡的人点不到。-XLJ310
        ;点击完成-XLJ310
        Send("{ENTER}")
        
         ;以下是我增加,学习上面的等待窗口大小改变。
        $title = "电脑管家"
        While 1
                Sleep(500)
                ;不断的获取QQ管家安装窗口的位置和大小,如果大小为924*624时,表示安装完后,打开了电脑管家.-xing999999
                $WinPos = WinGetPos($title, "")
                If IsArray($WinPos) Then
                        ;宽度为370,高度为600时 ;-xing999999
                        If $WinPos[2] = 944 And $WinPos[3] = 624 Then ExitLoop
                EndIf
        WEnd
        Sleep(3000);少量的等待,以防电脑卡的人点不到。-xing999999
        Send("!{F4}");关闭打开的QQ管家窗口-xing999999
EndIf

;~         If WinWait("电脑管家新功能", "", 3) Then
;~                 WinActivate("电脑管家新功能", "")

;~                 $WinPos = WinGetPos("电脑管家新功能", "")
;~                 ;获取鼠标位置并保存
;~                 $MousePos = MouseGetPos()
;~                 MouseClick("", $WinPos[0] + 727, $WinPos[1] + 467, 1, 0)
;~                 ;鼠标移回原处
;~                 MouseMove($MousePos[0], $MousePos[1], 0)
;~         EndIf
;~ EndIf
发表于 2015-12-14 17:26:47 | 显示全部楼层
回复 20# xing999999


    看来不同的分辨率最后这个窗口不一样。这个要多测试才知道。我是在1920x1080分辨率下运行的 其他分辨率没有测试。
发表于 2015-12-15 08:44:42 | 显示全部楼层
我也遇到过这个问题,看看
发表于 2015-12-15 11:32:41 | 显示全部楼层
路过学习。。。。。。。。。。。。。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-9-29 00:21 , Processed in 0.072901 second(s), 13 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表