$sTitle = "[CLASS:Intermediate D3D Window]"
If WinWait($sTitle, "", 10) Then
If SendKeepActive($sTitle) Then
Send("userid")
Send("{TAB}")
Send("password")
Send("{ENTER}")
EndIf
EndIf
Существуют различные варианты восстановления окна. SendKeepActive
, вероятно, является хорошим выбором, если вы работаете с Send
, поскольку он пытается сохранить окно активным для каждого вызова Send
. Чтобы продолжить код, просто добавьте больше кода после последнего EndIf
. Я удалил INSTANCE:1
для заголовка окна, так как заголовки не имеют свойства экземпляра, которое я знаю, и оно, кажется, игнорируется в моем тестировании. При необходимости измените заголовок.
Ниже приведен пример кода с использованием различных параметров. Я проверял это на Firefox с этой страницей, загруженной и отображенной Измените заголовок, если это необходимо. Send('{ALT}')
должен быть безопасен как Send
тест, поскольку он просто отображает строку меню. Сообщения о событиях записываются на консоль, чтобы не прерывать автоматизацию.
ConsoleWrite('Start' & @CRLF)
$sTitle = 'automation - How to continue script'
If WinWait($sTitle, '', 10) Then
_WinMin($sTitle)
; Option 1. SendKeepActive restores the window and tries to keep it active for each Send.
If SendKeepActive($sTitle) Then
ConsoleWrite('SendKeepActive' & @CRLF)
Send('{ALT}')
EndIf
_WinMin($sTitle)
; Option 2. WinActivate restores once.
If WinActivate($sTitle) Then
ConsoleWrite('WinActivate' & @CRLF)
EndIf
_WinMin($sTitle)
; Option 3. WinSetState can restore and WinActivate makes the window active.
If WinSetState($sTitle, '', @SW_RESTORE) Then
ConsoleWrite('@SW_RESTORE')
Sleep(1000)
If WinActivate($sTitle) Then
ConsoleWrite('...WinActivate')
EndIf
ConsoleWrite(@CRLF)
EndIf
_WinMin($sTitle)
EndIf
ConsoleWrite('Done' & @CRLF)
Func _WinMin($sTitle, $iSleep = 3000)
; Minimize window for testing.
Sleep($iSleep)
WinSetState($sTitle, '', @SW_MINIMIZE)
Sleep($iSleep)
EndFunc
Таким образом, у вас есть другие варианты, если исходный код не работает должным образом.
Ссылки: