afan
发表于 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, $ix = 0
For $i = 1 To $aList
If $aList[$i] <> '' And BitAND(WinGetState($aList[$i]), 2) Then
$ix += 1
$aWShow[$ix] = $aList[$i]
$aWShow[$ix] = $aList[$i]
$aWShow[$ix] = ($aList[$i] = $sTitle)
If $aWShow[$ix] And $sText <> '' Then
$aWShow[$ix] = WinGetText($aList[$i])
$aWShow[$ix] = StringInStr($aWShow[$ix], $sText)
EndIf
EndIf
Next
If Not $ix Then Return SetError(2, 0, 0)
$aWShow = $ix
ReDim $aWShow[$ix + 1]
_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
If $aList[$i] <> '' And BitAND(WinGetState($aList[$i]), 2) Then
If StringRegExp($aList[$i], '(?i)^\Q' & $sTitle & '\E') Then
If $sText = '' Then Return $aList[$i]
If StringInStr(WinGetText($aList[$i]), $sText) Then Return $aList[$i]
EndIf
EndIf
Next
Return SetError(1, 0, 0)
EndFunc ;==>__WinListCk
ttmv2019sx
发表于 2021-8-24 09:25:29
afan 发表于 2021-8-23 15:44
越多的容错机制越能让程序兼容性更强。因此,能遇到这些问题不是坏事。
下次直接测试本楼的,增加了调试 ...
A大,用你昨天的29楼修改过的,运行图如下,用你的最后的楼的代码的运行图如下,29楼运行出来是没有参数字的,最后的楼是有的
afan
发表于 2021-8-24 09:43:18
ttmv2019sx 发表于 2021-8-24 09:25
A大,用你昨天的29楼修改过的,运行图如下,用你的最后的楼的代码的运行图如下,29楼运行出来是没有参数 ...
终于搞清了,你还没看清吗?这么模糊的图片我都看到了,是“下一页”啊,大哥!如此低端的错误
ttmv2019sx
发表于 2021-8-24 09:49:10
afan 发表于 2021-8-24 09:43
终于搞清了,你还没看清吗?这么模糊的图片我都看到了,是“下一页”啊,大哥!如此低端的错误
是的,A版,被你一看就中了,哈,我都没有去看这个,晕死,哪也不对呀,,关键是这个参数字,我不是自个打上去的,我是窗口工具,获取出来,复制上去的,,我再看看,是不是显示,下获取不一样
afan
发表于 2021-8-24 09:51:19
ttmv2019sx 发表于 2021-8-24 09:49
是的,A版,被你一看就中了,哈,我都没有去看这个,晕死,哪也不对呀,,关键是这个参数字,我不是自个 ...
很简单,有的是 下一步,有的是 下一页
ttmv2019sx
发表于 2021-8-24 09:54:43
afan 发表于 2021-8-24 09:51
很简单,有的是 下一步,有的是 下一页
是的哟,,真的呀。A版,,我刚刚去试了一下,在WIN7中,,显示的是下一步,而在WIN10中,显示的是下一页,,晕死,一样的软件,咱出来,两个不同的字,,哎,哪关键。为什么这一些电脑,在我的初装系统中,是可以下去的,说明在同样是WIN10的情况下,,也会出来下一步,或者是下一页,这个还随机出来。。难道?
afan
发表于 2021-8-24 09:58:50
ttmv2019sx 发表于 2021-8-24 09:54
是的哟,,真的呀。A版,,我刚刚去试了一下,在WIN7中,,显示的是下一步,而在WIN10中,显示的是下一页 ...
很简单啊,参数 填“下一” 不就都解决了……
ttmv2019sx
发表于 2021-8-24 10:02:29
afan 发表于 2021-8-24 09:58
很简单啊,参数 填“下一” 不就都解决了……
哈,,A版,,是的哟,,我的脑子就是不好使,,这个可视文字的关键字是包含的,不一定要绝对相等,有下一就行了,这一下是搞定了,,我也想起来了,我原来这个窗口工具,去获取信息的时候,是台式机上的WIN7在获取的,,测试是用WIN10的笔记本在弄的,,怪不得,会出现这样的错误,但是同样的WIN10的,,他们的下不去,A版你怀疑是这个下一步,与下一页的原因,这个难道我的笔记本中的是显示下一步的WIN10,,真是可以的,,,这一下是OK了。。几个月的东西,就如A版说的,几下就行,,,,
ttmv2019sx
发表于 2021-8-24 10:03:42
afan 发表于 2021-8-24 09:58
很简单啊,参数 填“下一” 不就都解决了……
我是没有想法,,这工具,还会变文字,真行,以为都是 统一的,,一直没有去想这方面呀,,惭愧呀
afan
发表于 2021-8-24 10:07:49
ttmv2019sx 发表于 2021-8-24 10:03
我是没有想法,,这工具,还会变文字,真行,以为都是 统一的,,一直没有去想这方面呀,,惭愧呀
我也是第一次见……
ttmv2019sx
发表于 2021-8-25 11:25:38
afan 发表于 2021-8-24 10:07
我也是第一次见……
确实,,昨天我又去测试了,,光是打开工程,不工作,我发现了不同的WIN10的系统下,显示,有下一步,有下一页,在WIN7中,也有下一步,也有下一页,,哈,真的是太狗血了,还真的是自由变化,如果没有像A大你这样,仔细的话,哪不去看这一些字的话,,我看别说几个月了,,可能不一定能找到根源所在了
ttmv2019sx
发表于 2021-8-25 11:25:59
afan 发表于 2021-8-24 10:07
我也是第一次见……
同样的WIN10WIN7,,都有这样,两种字,,哈。真是历害