Тема: VBS: ввод с помощью SendKeys в определенное окно
Здравствуйте!
Помогите решить задачу:
имеется скрипт, который перезагружает устройство через telnet. Он запускает telnet и с помощью SendKeys оправляет команды. Чтобы перед вводом каждой команды окно было активно сделал так:
On Error Resume Next
Host = "192.168.19.210"
Name = "г. "
Set oShell = WScript.CreateObject("WScript.Shell")
msg = MsgBox("Перезагрузить D-Link DVG-5112S " & Name & " (" & Host & ")" & "?",vbOKCancel,"Перезагрузить")
If msg = vbOK Then 'Если нажата кнопка Ок
oShell.Run "telnet.exe " & Host
WScript.Sleep 4000
oShell.AppActivate("Telnet " & Host)
oShell.SendKeys "admin" & chr(13)
WScript.Sleep 2000
oShell.AppActivate("Telnet " & Host)
oShell.SendKeys "" & chr(13)
WScript.Sleep 2000
oShell.AppActivate("Telnet " & Host)
oShell.SendKeys "restart" & chr(13)
WScript.Sleep 2000
oShell.AppActivate("Telnet " & Host)
oShell.SendKeys "Y" & chr(13)
WScript.Quit
Else 'Если нажата кнопка отмена
WScript.Quit
End If
Но вот незадача - иногда устройство оказывается недоступным и телнет при подключении выдает ошибку и закрывает окно и тогда Вы сами понимаете что происходит.
Пытался сделать так
On Error Resume Next
Host = "192.168.19.210"
Name = "г. "
Set oShell = WScript.CreateObject("WScript.Shell")
msg = MsgBox("Перезагрузить D-Link DVG-5112S " & Name & " (" & Host & ")" & "?",vbOKCancel,"Перезагрузить")
If msg = vbOK Then 'Если нажата кнопка Ок
oShell.Run "telnet.exe " & Host
WScript.Sleep 4000
if oShell.AppActivate("Telnet " & Host) then
oShell.SendKeys "admin" & chr(13)
WScript.Sleep 2000
oShell.AppActivate("Telnet " & Host)
oShell.SendKeys "" & chr(13)
WScript.Sleep 2000
oShell.AppActivate("Telnet " & Host)
oShell.SendKeys "restart" & chr(13)
WScript.Sleep 2000
oShell.AppActivate("Telnet " & Host)
oShell.SendKeys "Y" & chr(13)
else
msg = MsgBox("Устройство отключено или недоступно через Telnet!!!")
end if
WScript.Quit
Else 'Если нажата кнопка отмена
WScript.Quit
End Ifно почему-то с telnet это не работает.
Может кто подскажет как еще можно произвести проверку, что окно активно?

