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

[网络通信] 关于等窗口获取失败的情况!【已解决】

[复制链接]
发表于 2021-8-23 15:44:43 | 显示全部楼层
ttmv2019sx 发表于 2021-8-23 15:35
我是一直在想,如果语句写的有问题的话,哪不可能会有成功的电脑呀,我在下面的办公室,一共有9台电脑, ...

越多的容错机制越能让程序兼容性更强。因此,能遇到这些问题不是坏事。
下次直接测试本楼的,增加了调试信息
#include <Array.au3>

Local $hWin = _WinListWait('Uninstall Microsoft Office', '下一步(&N)', 10) ;10秒内检测等待
If Not @error Then MsgBox(0, '已检测到窗口', $hWin)

Func _WinListWait($sTitle, $sText = '', $iTimeout = 0)
        Opt('WinTitleMatchMode', -1)
        Local $hWin, $iTs = TimerInit()
        If $iTimeout > 0 Then
                $iTimeout *= 1000
                Do
                        $hWin = WinGetHandle($sTitle, $sText)
                        If $hWin Then Return $hWin
                        $hWin = __WinListCk($sTitle, $sText)
                        If $hWin Then
                                MsgBox(0, '__WinListCk 已检测到窗口', $hWin)
                                Return $hWin
                        EndIf
                        Sleep(100)
                        If TimerDiff($iTs) >= $iTimeout Then
                                Local $aList = WinList(), $aWShow[UBound($aList) + 1][5], $ix = 0
                                For $i = 1 To $aList[0][0]
                                        If $aList[$i][0] <> '' And BitAND(WinGetState($aList[$i][1]), 2) Then
                                                $ix += 1
                                                $aWShow[$ix][0] = $aList[$i][0]
                                                $aWShow[$ix][1] = $aList[$i][1]
                                                $aWShow[$ix][2] = ($aList[$i][0] = $sTitle)
                                                If $aWShow[$ix][2] And $sText <> '' Then
                                                        $aWShow[$ix][3] = WinGetText($aList[$i][1])
                                                        $aWShow[$ix][4] = StringInStr($aWShow[$ix][3], $sText)
                                                EndIf
                                        EndIf
                                Next
                                If Not $ix Then Return SetError(2, 0, 0)
                                $aWShow[0][0] = $ix
                                ReDim $aWShow[$ix + 1][5]
                                _ArrayDisplay($aWShow, '已超时,未检测到窗口.当前可见窗口')
                                Return SetError(1, 0, 0)
                        EndIf
                Until 0
        EndIf
        Do
                $hWin = WinGetHandle($sTitle, $sText)
                If $hWin Then Return $hWin
                $hWin = __WinListCk($sTitle, $sText)
                If $hWin Then
                        MsgBox(0, '__WinListCk 已检测到窗口', $hWin)
                        Return $hWin
                EndIf
                Sleep(100)
        Until 0
EndFunc   ;==>_WinListWait
Func __WinListCk($sTitle, $sText)
        Local $aList = WinList()
        For $i = 1 To $aList[0][0]
                If $aList[$i][0] <> '' And BitAND(WinGetState($aList[$i][1]), 2) Then
                        If StringRegExp($aList[$i][0], '(?i)^\Q' & $sTitle & '\E') Then
                                If $sText = '' Then Return $aList[$i][1]
                                If StringInStr(WinGetText($aList[$i][1]), $sText) Then Return $aList[$i][1]
                        EndIf
                EndIf
        Next
        Return SetError(1, 0, 0)
EndFunc   ;==>__WinListCk
 楼主| 发表于 2021-8-24 09:25:29 | 显示全部楼层
afan 发表于 2021-8-23 15:44
越多的容错机制越能让程序兼容性更强。因此,能遇到这些问题不是坏事。
下次直接测试本楼的,增加了调试 ...

A大,用你昨天的29楼修改过的,运行图如下,用你的最后的楼的代码的运行图如下,29楼运行出来是没有参数字的,最后的楼是有的

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2021-8-24 09:43:18 | 显示全部楼层
ttmv2019sx 发表于 2021-8-24 09:25
A大,用你昨天的29楼修改过的,运行图如下,用你的最后的楼的代码的运行图如下,29楼运行出来是没有参数 ...

终于搞清了,你还没看清吗?这么模糊的图片我都看到了,是“下一”啊,大哥!如此低端的错误
 楼主| 发表于 2021-8-24 09:49:10 | 显示全部楼层
afan 发表于 2021-8-24 09:43
终于搞清了,你还没看清吗?这么模糊的图片我都看到了,是“下一页”啊,大哥!如此低端的错误

是的,A版,被你一看就中了,哈,我都没有去看这个,晕死,哪也不对呀,,关键是这个参数字,我不是自个打上去的,我是窗口工具,获取出来,复制上去的,,我再看看,是不是显示,下获取不一样
发表于 2021-8-24 09:51:19 | 显示全部楼层
ttmv2019sx 发表于 2021-8-24 09:49
是的,A版,被你一看就中了,哈,我都没有去看这个,晕死,哪也不对呀,,关键是这个参数字,我不是自个 ...

很简单,有的是 下一步,有的是 下一页
 楼主| 发表于 2021-8-24 09:54:43 | 显示全部楼层
afan 发表于 2021-8-24 09:51
很简单,有的是 下一步,有的是 下一页

是的哟,,真的呀。A版,,我刚刚去试了一下,在WIN7中,,显示的是下一步,而在WIN10中,显示的是下一页,,晕死,一样的软件,咱出来,两个不同的字,,哎,哪关键。为什么这一些电脑,在我的初装系统中,是可以下去的,说明在同样是WIN10的情况下,,也会出来下一步,或者是下一页,这个还随机出来。。难道?
发表于 2021-8-24 09:58:50 | 显示全部楼层
ttmv2019sx 发表于 2021-8-24 09:54
是的哟,,真的呀。A版,,我刚刚去试了一下,在WIN7中,,显示的是下一步,而在WIN10中,显示的是下一页 ...

很简单啊,参数 填“下一” 不就都解决了……
 楼主| 发表于 2021-8-24 10:02:29 | 显示全部楼层
afan 发表于 2021-8-24 09:58
很简单啊,参数 填“下一” 不就都解决了……

哈,,A版,,是的哟,,我的脑子就是不好使,,这个可视文字的关键字是包含的,不一定要绝对相等,有下一就行了,这一下是搞定了,,我也想起来了,我原来这个窗口工具,去获取信息的时候,是台式机上的WIN7在获取的,,测试是用WIN10的笔记本在弄的,,怪不得,会出现这样的错误,但是同样的WIN10的,,他们的下不去,A版你怀疑是这个下一步,与下一页的原因,这个难道我的笔记本中的是显示下一步的WIN10,,真是可以的,,,这一下是OK了。。几个月的东西,就如A版说的,几下就行,,,,
 楼主| 发表于 2021-8-24 10:03:42 | 显示全部楼层
afan 发表于 2021-8-24 09:58
很简单啊,参数 填“下一” 不就都解决了……

我是没有想法,,这工具,还会变文字,真行,以为都是 统一的,,一直没有去想这方面呀,,惭愧呀
发表于 2021-8-24 10:07:49 | 显示全部楼层
ttmv2019sx 发表于 2021-8-24 10:03
我是没有想法,,这工具,还会变文字,真行,以为都是 统一的,,一直没有去想这方面呀,,惭愧呀

我也是第一次见……
 楼主| 发表于 2021-8-25 11:25:38 | 显示全部楼层
afan 发表于 2021-8-24 10:07
我也是第一次见……

确实,,昨天我又去测试了,,光是打开工程,不工作,我发现了不同的WIN10的系统下,显示,有下一步,有下一页,在WIN7中,也有下一步,也有下一页,,哈,真的是太狗血了,还真的是自由变化,如果没有像A大你这样,仔细的话,哪不去看这一些字的话,,我看别说几个月了,,可能不一定能找到根源所在了
 楼主| 发表于 2021-8-25 11:25:59 | 显示全部楼层
afan 发表于 2021-8-24 10:07
我也是第一次见……

同样的WIN10  WIN7,,都有这样,两种字,,哈。真是历害
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-4-30 00:15 , Processed in 0.070650 second(s), 14 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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