GetInfo.Ru – Компьютерная библиотека
Последние поступления
Как выбрать систему управления базы данных
Базы данных03/09/14
Этапы загрузки UNIX (в схеме)
Unix27/03/12
Gatewall Antispam: тотальный контроль электронной почты
Спам21/04/11
Мастер-класс: создаем Интернет-магазин (Часть 1)
Обзоры ПО20/04/11
CorelDRAW Graphics Suite X5: Что нового?
Обзоры ПО20/07/10
Добавить статью
Самые читаемые материалы
Java: Русские буквы и не только...(75350)
Автоматизация с WSH(26304)
Сортировка столбцов в таблице без перезагрузки(14298)
Доступ к базам данных из Java-программ и проблемы русификации(13710)
Блоки try... catch... finally... в JScript 5(12633)
Всего статей: 793Всего авторов: 364Подразделов: 47Добавлено за сутки: 0
Статьи  СТАТЬИ Форум  ФОРУМ Рейтинг  РЕЙТИНГ Поиск  ПОИСК Контакты  КОНТАКТЫ
» Главная » Java/JavaScript » Автоматизация с WSH

Автоматизация с WSH


RsK
rskorg@mail.ru
http://www.isoft.spb.ru/

Windows Script Host

За свое существование корпорация Майкрософт успела натворить много полезного и бесполезного. В данной статье я расскажу о технологии WSH, а точнее как с помощью этой технологии можно автоматизировать работу программ* (например, установочных).

WSH это специальная технология, которая позволяет запускать скрипты VBScript и JScript, прямо из под операционной системы. Здесь я расскажу про работу с JScript.

В ХР WSH установлена изначально, в 98 она тоже есть, но старая версия, так что потребуется скачать новую с мелкосовтовского сайта.

Эта технология имеет довольно обширные возможности, но для решения нашей задачи нужны только четыре функции, которые выглядят следующим образом:

  • Sleep(Х) – остановить выполнение на Х миллисекунд
  • SendKeys("Х") – имитируется нажатие клавиши Х на клавиатуре (или нескольких клавиш поочереди, если это строка)
  • AppActivate("Х") – активизирует приложение по заголовку Х окна или по идентификатору процесса Х
  • Run("Х") – запуск приложения по командной строке Х

Эти функции являются методами объектов Shell и WScript. При этом объект WScript объявлен изначально, а Shell придется объявить самим. Делается это следующим образом:

	var wsh=WScript.CreateObject("WScript.Shell");

Функция Sleep() принадлежит объекту WScript, а остальные функции – Shell. Теперь ничто не мешает использованию вышеперечисленных функций. Следующий пример показывает как запустить калькулятор и посчитать произведение 2 на 3:

	var wsh=WScript.CreateObject("WScript.Shell");
	wsh.Run("calc");
	WScript.Sleep("500");
	wsh.AppActivate("Калькулятор");
	wsh.SendKeys("2");
	WScript.Sleep("500");
	wsh.SendKeys("*");
	WScript.Sleep("500");
	wsh.SendKeys("3");
	WScript.Sleep("500");
	wsh.SendKeys("~");

Кодирование кнопок

Все символьные кнопки записываются как символы, например, требуется нажать кнопку «а» пишем wsh.SendKeys("а"), элементарно. Если нужны специальные клавиши (enter, alt…) тогда пользуемся записью показанной в таблице:

КнопкаАргумент
BACKSPACE{BACKSPACE}, {BS}, или {BKSP}
BREAK{BREAK}
CAPS LOCK{CAPSLOCK}
DEL or DELETE{DELETE} ил {DEL}
DOWN ARROW{DOWN}
END{END}
ENTER{ENTER} или ~
ESC{ESC}
HELP{HELP}
HOME{HOME}
INS or INSERT{INSERT} или {INS}
LEFT ARROW{LEFT}
NUM LOCK{NUMLOCK}
PAGE DOWN{PGDN}
PAGE UP{PGUP}
PRINT SCREEN{PRTSC}
RIGHT ARROW{RIGHT}
SCROLL LOCK{SCROLLLOCK}
TAB{TAB}
UP ARROW{UP}
F1{F1}
F2{F2}
……………….
F12{F12}
SHIFT+
CTRL^
ALT%

Иногда требуется нажать одновременно две кнопки для выполнения действия, например, переход в следующее приложение ALT+TAB в SendKeys() это реализуется записью SendKeys("%+{TAB}"), тоесть запись имеет формат <первая нажимаемая клавиша>+<вторая нажимаемая клавиша>.

А здесь еще один пример-прикол созданный с помощью JScript, который через 5 минут после запуска скрипта открывает каждые 2 минуты блокнот и печатает в нем строку «Эй чувак ты меня уже достал может все же передохнем пару часиков??» (должна быть включена русская раскладка):

	var wsh=WScript.CreateObject("WScript.Shell");
	WScript.Sleep("300000");
	wsh.Run("notepad");
	str = "Эй чувак ты меня уже достал может все же передохнем пару часиков??";
	while(1==1)
	{
	            WScript.Sleep("300");
	            for(i=0; i<str.length; i++)
	            {
                      wsh.AppActivate("Безымянный - Блокнот");
                      wsh.SendKeys(str.charAt(i));
                      WScript.Sleep("300");
	            }
	 WScript.Sleep("120000");
	}

Полезность

Да если кто заинтересовался этой фихой могу подогнать программу TScript , для более удобного использования этой технологии. Для ее использования просто составляете файл в формате:

Клавиша ожидание
Клавиша ожидание
………………………

После берете и запускаете программу с этим файлом в качестве параметра и получаете в итоге файл:

	var wsh=WScript.CreateObject("WScript.Shell");
	WScript.Sleep(ожидание);
	wsh.SendKeys("Клавиша");
	WScript.Sleep(ожидание);
	wsh.SendKeys("Клавиша");

Например, если преобразовать файл «1.txt»:

~ 200
g 400
t 500

, то получим в итоге готовый к употреблению файл «1.txt.js»:

	var wsh=WScript.CreateObject("WScript.Shell");
	WScript.Sleep(200);
	wsh.SendKeys("~");
	WScript.Sleep(400);
	wsh.SendKeys("g");
	WScript.Sleep(500);
	wsh.SendKeys("t");

Важно! Для работоспособности программы файл не должен быть пустым, клавиша не должна включать пробелов, между клавишей и ожиданием один пробел, в конце файла не должно быть перевода на новую строку (вроде все:-)).

Для удобства можно скинуть ссылку на программу в папку SendTo, а для преобразования нажимать на файл правой кнопкой мыши и выбирать отправить->TScript и в текущей папке вы получаете преобразованный файл.

Пишите если, что непонятно rskorg@mail.ru.

 
04.03.2004
Версия для печати Версия для печати Запомнить ссылку Запомнить ссылку
Ваша оценка:  1   2   3   4   5     

 О проектеПерепечаткаАвторамПартнерыО нас пишут
Наверх
©2003—2007. GETINFO.RU. ВСЕ ПРАВА ЗАЩИЩЕНЫ.