Что в vbs значит WScript.Sleep 1 on error resume next set t=createobject("Wscript.Shell")
WScript.Sleep 1
on error resume next
set t=createobject("Wscript.Shell")
WScript.Sleep 1
on error resume next
set t=createobject("Wscript.Shell")
7. Работа с окнами и приложениями
Запуск внешних приложений из скрипта VBScript, применение объекта WshShell, методы Run(), AppActivate(), SendKeys()
7.1 Возможности объекта Wscript.Shell
Запуск приложения производится при помощи объекта WScript.Shell. Первая строка для работы с этим объектом выглядит как
Dim WshShell
set WshShell = WScript.CreateObject("WScript.Shell")
Сам запуск производится при помощи метода Run:
WshShell.Run "Имя_приложения"
Необязательные параметры: цифра (1-10) - вид диалогового окна, true/false - приостанавливать выполнение скрипта пока не завершится работа программы или нет.
Обычно существует две ситуации, когда нам нужно запустить приложения из скрипта:
1) запускаем утилиты командной строки (например, из Resource Kit) и нам нужно получить то, что они возвращают
2) запускаем графическое приложение и передаем туда нажатия клавиш
При запуске утилиты командной строки обратить внимание на следующие моменты:
o если нам нужно возвращать код ошибки, делаем это следующим образом:
sReturn = WshShell.Run("ping " & "192.168.1.2", 1, TRUE)
обязательно должно стоять ключевое слово TRUE, иначе возвращаемый код всегда будет 0;
o если нужно получить вывод от утилиты, записываем его при помощи > в текстовый файл, затем открываем на чтение при помощи FSO, скачиваем в переменную и удаляем. В переменной можно искать значение при помощи функции inStr (не найдено - 0, найдено - значение, отличное от 0).
o если используете не исполняемые файлы, а команды интерпретатора (DIR, CD, MD и т. п.) , то команда на запуск должна выглядеть как
WshShell.Run("%COMSPEC% /K dir")
%COMSPEC% - чтобы не выяснять, какой командный интерпретатор работает, /K - чтобы не закрывалось окно командного интерпретатора.
o для того, чтобы не зависеть от наличия утилит на компьютере пользователя, есть смысл выложить используемые утилиты на сервер в сети и обращаться к ним по сетевому имени;
o для того, чтобы запустить утилиту с измененным приоритетом, можно использовать команду интерпретатора Start.
При запуске графического приложения обычно есть необходимость передать в него нажатия клавиш. Для этой цели используются методы AppActivate (передача фокуса окну приложения) и SendKeys (передать нажатия клавиш)
Метод AppActivate позволяет передать фокус приложению. Ему передается заголовок окна приложения:
WshShell.Run "calc"
WScript.Sleep (200)
WshShell.AppActivate "Calculator"
WScript.Sleep (200)
Будьте внимательны - заголовок окна может быть разным! Поэтому лучше использовать централизованные копии своих приложений на сервере. Кроме того, желательно делать паузы после запуска приложения и передачи ему фокуса, чтобы операция успела выполниться
Далее используем метод SendKeys:
WshShell.SendKeys("1{+}");
WScript.Sleep(500);
WshShell.SendKeys("2");
WScript.Sleep(500);
WshShell.SendKeys("~");