В этой статье мы поверхностно рассмотрим примеры запуска файлов с расширение msc, или просто оснастки. Так, к ним относятся такие сервисы как дефрагментация диска, службы Windows, Диспетчер устройств и так далее. Но, сперва немного лирики…
Что бы запустить диспетчер устройств из командной строки достаточно прописать строку mmc devmgmt.msc или просто devmgmt.msc. аналогичную команду можно прописать в меню Пуск/Выполнить. Однако моя широкая фантазия не терпит лишь запуска диспетчера устройств через командную строку, и требует чего больше, а именно: как и в прошлых публикациях, мы будим писать код на обоих языках (vbscript и jscript). Задача сценария – создать форму, на которой будет выпадающий список некоторых оснасток и кнопку, которая будет запускать выбранный элемент. Как и прежде, для создания оконного интерфейса мы воспользуемся компонентом WindowSystemObject, а для запуска файла – функцией Run объекта WScript.Shell.
Ну что же, приступим…
' *********************************************************** ' Открытие заданной оснастки, например, ' запускаем диспетчер устройств из командной строки ' osnastki.vbs ' *********************************************************** Option Explicit dim f, t, mmc_box, Button_Open dim WshShell, WSO '****************************************************************** ' создаем ссылки на объекты set WshShell = WScript.CreateObject("Wscript.Shell") set WSO = WScript.CreateObject("Scripting.WindowSystemObject") '******************************************************************* ' создаем форму set f = WSO.CreateForm(0, 0, 0, 0, WSO.Translate("WS_CONTROLBOX | WS_MINIMIZEBOX")) f.Text = "Открытие оснастки Windows" f.ClientWidth = 400 f.ClientHeight = 100 f.CenterControl() '*********************************************************************** ' элементы формы ' текстовая метка f.TextOut 10,10,"Список оснасток:" ' список set mmc_box = f.CreateComboBox(120,10,140,20,WSO.Translate("CBS_DROPDOWNLIST")) mmc_box.add("диспетчер устройств") mmc_box.add("управление компьютером") mmc_box.add("дефрагментация диска") mmc_box.add("журнал событий") mmc_box.add("службы Windows") mmc_box.ItemIndex=0 'кнопка открытия оснастки, например, ' диспетчер устройств из командной строки set Button_Open = f.CreateButton(280,10,100,25,"Открыть") Button_Open.OnClick = Getref("Open_mmc") set t = f.CreateHyperLink(130,40,250,25,"scriptcoding.ru") f.Show() WSO.Run() ' функция для открытия оснастки, например ' диспетчер устройств через командную строку function Open_mmc() dim mmc select case(mmc_box.ItemIndex) case 0 mmc = "devmgmt.msc" case 1 mmc = "compmgmt.msc" case 2 mmc = "dfrg.msc" case 3 mmc = "eventvwr.msc" case else mmc = "services.msc" end select WshShell.Run "mmc " & mmc end function |
Для создания списка мы используем функцию CreateComboBox, которая возвращает объект, о чем говорит ключевое слово set перед переменной mmc_box. Для добавления элементов в список используется функция Add, ей передается только один параметр – строковое значение, имя элемента. В нашем случае список будет содержать пять элементов (диспетчер устройств, управление компьютером, дефрагментация диска, журнал событий и службы Windows). Строка mmc_box.ItemIndex=0 определяет, какой элемент в списке будет выбран, в данном случаем элемент под номером ноль (нумерация идет с нуля).
Переменная Button_Open хранит в себе ссылку на объект, который отвечает за обработку кнопки на нашей форме, при нажатии на кнопку будет вызвана функция Open_mmc, которая в свою очередь, запускает выбранную оснастку, например, диспетчер устройств Windows из командной строки.
Open_mmc() – собственно, функция которая и правит балом, помним, что в vbscript мы ее вызываем как строковой параметр в функции GetRef, а в jscript – просто прописываем имя. В теле функции используется оператор выбора, select … case для vbscript или switch … case для jscript (обратите внимание на ключевое слово breake, если его не прописать, то будет происходить проверка всех значений в операторе выбора). В качестве параметра оператору передается индекс выбранного элемента, и в зависимости от значения, переменной mmc присваивается нужное имя файла.
Ну и напоследок, мы вызываем метод Run для запуска выбранного файла, например, диспетчера устройств Windows из командной строки.
// *********************************************************** // Открытие заданной оснастки, например, // запускаем диспетчер устройств из командной строки // osnastki.js // *********************************************************** var f, t, mmc_box, Button_Open; //****************************************************************** // создаем ссылки на объекты var WshShell = WScript.CreateObject("Wscript.Shell"); var WSO = WScript.CreateObject("Scripting.WindowSystemObject"); //******************************************************************* // создаем форму var f = WSO.CreateForm(0, 0, 0, 0, WSO.Translate("WS_CONTROLBOX | WS_MINIMIZEBOX")); with(f){ Text = "Открытие оснастки Windows"; ClientWidth = 400; ClientHeight = 100; CenterControl(); } //*********************************************************************** // элементы формы // текстовая метка f.TextOut(10,10,"Список оснасток:"); // список mmc_box = f.CreateComboBox(120,10,140,20,WSO.Translate("CBS_DROPDOWNLIST")); mmc_box.add("диспетчер устройств"); mmc_box.add("управление компьютером"); mmc_box.add("дефрагментация диска"); mmc_box.add("журнал событий"); mmc_box.add("службы Windows"); mmc_box.ItemIndex=0; //кнопка открытия оснастки, например, // диспетчер устройств из командной строки Button_Open = f.CreateButton(280,10,100,25,"Открыть"); Button_Open.OnClick = Open_mmc; t = f.CreateHyperLink(130,40,250,25,"scriptcoding.ru"); f.Show(); WSO.Run(); // функция для открытия оснастки, например // диспетчер устройств через командную строку function Open_mmc(){ var mmc; switch (mmc_box.ItemIndex){ case 0: mmc = "devmgmt.msc"; break; case 1: mmc = "compmgmt.msc"; break; case 2: mmc = "dfrg.msc"; break; case 3: mmc = "eventvwr.msc"; break; default: mmc = "services.msc"; } WshShell.Run("mmc " + mmc); } |
Вообще, по теме оснасток Windows следовало бы написать отдельную статью, но, меня пока в область программирования занесло, да и сутки уже не спал… Лады, лирике конец, пишите через комментарии, если есть вопросы, ключевой фразой статьи было «диспетчер устройств из командной строи«.