试试Local $sTitle = 'Uninstall Microsoft Office'
Local $aControl[3][3] = [[2], [$sTitle, '', 'DirectUIHWND2'], [$sTitle, '', 'DirectUIHWND5']]
WinWait($sTitle, '', 10)
Local $ix = _ControlWait($aControl, 50) ; 等待某个控件出现,可设置超时
If @error Then
MsgBox(48, '警告', '没有: DirectUIHWND')
Else
ControlClick($sTitle, '', 'Button1')
EndIf
If WinWait($sTitle, 'Yes, remove all Office installations', 50) Then
ControlClick($sTitle, '', 'Button6')
Else
MsgBox(48, '警告', '没有: Yes, remove...')
EndIf
$ix = _ControlWait($aControl, 50) ; 等待某个控件出现,可设置超时
If @error Then
MsgBox(48, '警告', '没有: DirectUIHWND')
Else
ControlClick($sTitle, '', 'Button1')
EndIf
If WinWait($sTitle, '关闭疑难解答', 50) Then
ControlClick($sTitle, '', 'Button3')
Else
MsgBox(48, '警告', '没有: 关闭疑难解答')
EndIf
Func _ControlWait($aControl, $iTimeout = 0) ; 等待某个控件出现,可设置超时
;~ $aControl - 控件数组: [0][0] 需匹配的数量;[1~n][0]第n控件的标题; [1~n][1]第n控件的文本; [1~n][2]第n控件的控件ID;
;~ $iTimeout - 超时秒,为0始终等待
;~ 返回值: 成功 - 若某控件已出现,返回该控件在数组中的1基索引;失败 - 所有控件在超时范围内未出现则返回0,并设置 @error=1
Local $ts = TimerInit()
Do
For $ii = 1 To $aControl[0][0]
If ControlGetHandle($aControl[$ii][0], $aControl[$ii][1], $aControl[$ii][2]) Then Return $ii
Next
Sleep(50)
If $iTimeout And TimerDiff($ts) >= $iTimeout * 1000 Then Return SetError(1, 0, 0)
Until 0
EndFunc ;==>_ControlWait
|