- Примеры создания диалогового окна
- Как создавать диалоговые окна в Windows?
- Как создавать диалоговые окна с ошибкой?
- Поле «5+16» приказывает системе создавать диалоговые окна с ярлыком критической ошибки и двумя кнопками. Это, как видно, кнопки «повтор» и «отмена». Но как вы уже поняли, можно создавать диалоговые окна и с другими настройкам, и всё это благодаря комбинации цифр или чисел. Это – числовые выражения постоянных, отвечающие за выводимые кнопки, значки и режимы окна. Подробнее смотрим ниже:
- Диалоговые окна VBS: множество постоянных и переменных.
- 7 скриптов для Windows, которые помогут сэкономить время
- Выключение и перезапуск
- Удаляем ненужное
- Управляем процессами
- Переименовываем группу файлов
- Ищем файлы
- Справка
- Находим данные
- Выключение и перезапуск
- Удаляем ненужное
- Управляем процессами
- Переименовываем группу файлов
- Ищем файлы
- Справка
- Находим данные
Примеры создания диалогового окна
В данной статье я решил рассмотреть способы создания диалогового окна базовыми способами – средствами Windows Script Host. В частности рассмотрены методы: BrowseForFolder, InputBox, Echo, MsgBox и Popup.
И так, приступим
BrowseForFolder
Создание диалогового окна для выбора папок и даже файлов осуществляется с помощью метода BrowseForFolder, что бы его использовать, надо прежде создать экземпляр объекта Application. Стоит взять на заметку, что поддержку осуществляет функция из библиотеки Shdocvw.dll, которая входит в состав Internet Explorer версий 4 и 5.
Также понадобится библиотека Shell32.dll версии 4.71 и выше, доступная в Windows 98 (версия 4.72) и Windows 2000 (версия 5). В Windows 95/NT 4 библиотека Shell32.dll версии 4.71 доступна, если установлен Internet Explorer 4 с обновлением Active Desktop. При установке Internet Explorer 5 в Windows 95/NT обновления Shell32.dll не происходит. Следует сначала установить Internet Explorer 4 с обновлением Active Desktop, а затем уже Internet Explorer 5.
Давайте создадим экземпляр объекта Shell.Application и посмотрим на синтаксис:
Рассмотрим описание параметров:
hWnd — передает создаваемому диалоговому окну описатель окна, он всегда должен быть равен 0, поскольку у сценария нет описателя.
Titl — задает строку, которая выводится в созданном диалоговом окне ниже заголовка.
Options — представляет собой 32-разрядный флаг, который задает внутренние свойства диалогового окна. Некоторые константы можно комбинировать (например, &Н0010 и &Н0001).
Root – необязательный, позволяет заранее выбрать папку. Путь может быть задан в виде строки (например, D:\Data) или с помощью одного из значений, которые позволяют использовать специальную папку в пространстве имен оболочки. Список значений также описано в шпаргалке.
Давайте рассмотрим пример на VBScript для выбора каталогов:
В данном примере, с помощью BrowseForFolder происходит создание диалогового Windows окна для выбора папки, и возвращает сообщение, какой каталог был выделен или же ничего не было выбрано. Сам метод позволяет выбирать не только каталог, но и файлы.
Теперь рассмотрим пример на VBScript для выбора файлов:
InputBox
Теперь давайте рассмотрим функцию InputBox, которая позволяет получить информации от пользователя. Стоит упомянуть, что функция InputBox поддерживается только языком VBScript. Давайте посмотрим на ее общий синтаксис:
result = InputBox(текст[, [заголовок], [умолчание], [поз-Х], [поз-У]])
Описание ключей таковы.
Текст — Необходимый параметр, определяющий сообщение, которое выводится в диалоговом окне.
Заголовок — Необязательный, определяющий текст заголовка диалогового окна.
Умолчание — Необязательный, задающий значение по умолчанию для текстового поля.
Поз-Х и Поз-У — Необязательные, определяющие положение верхнего левого угла диалогового окна.
Есть еще два необязательных ключа helpflle и context, с их помощью можно создавать встроенную справку, хотя, как правило, в данном контексте в этом нет необходимости.
Если необязательный ключ не задан, VBScript использует значение по умолчанию. Чтобы опустить необязательный параметр, надо оставить его место между двумя запятыми пустым:
В отличие от MsgBox ключа для кнопки у функции InputBox нет. Результат, возвращаемый InputBox при закрытии, зависит от того, какая кнопка была нажата: ОК возвращает содержимое текстового поля (т. е. данные, введенные пользователем), a Cancel отменяет результаты ввода и возвращает пустую строку. Переменная result позволяет проверить, ввел ли человек действительную информацию.
Echo
Метод Echo можно применять как в VBScript, так и в языке Jscript. Существенных отличий в синтаксисе нет. Ниже приводится простой пример диалогового окна, которое будет выводить сообщение для пользователя:
Как видим, все предельно просто, в кавычках мы прописали текст, а далее после запятой следовала константа, значение которой должно быть показано пользователю. Для перевода строки также надо использовать константы или ESC-последовательность:
Тут, для JS мы взяли ESC-последовательность «\n» , а для VBS – vbCrLf константу.
MsgBox
MsgBox позволяет создавать диалоговое окно только сценариями языка VBS, в отличии от метода Echo она имеет в своем составе больший функционал – число кнопок, название окна, ну и, естественно, сам текст. Общий синтаксис таков:
MsgBox(prompt[,buttons][,title][,helpfile,context])
prompt – является обязательным и отвечает за текст, выводимый диалоговым окном
buttons – необязательный, целое число или константа (количество и тип кнопок, вид значка, установка фокуса)
title – также не является обязательным, определяет название окна
helpfile – задает путь к файлу-справке, файл-справка должен иметь расширение .hlp
context – число, которое задает раздел справки
Вот простой пример:
Фактически, ключи для кнопок и заголовок можно опустить, тогда мы получим результат, идентичный Echo. С помощью констант можно задавать тип, фокус и количество кнопок. В добавок, вы можете определить и значок для создаваемого диалогового окна, то есть, вы вправе комбинировать константы, смотрим:
Теперь давайте посмотрим, как работают два последних ключа helpfile и context, ведь с их помощью можно задать справку. Тут нам понадобится константа vbMsgBoxHelpButton, смотрим на код:
Не знаю почему, но ничего не получилось, выбивает ошибку:
Раздел не существует. Обратитесь к поставщику продукта за обновленной версией файла справки. (129)
Возможно, есть некие подводные камни, Ну да ладно. Важно еще и то, что функция MsgBox возвращает результат, который можно присвоить переменной, с помощью него можно определить, на что нажал пользователь. Смотрим на код:
Popup
Теперь давайте россмотрим пример, как осуществить создание диалогового окна используя метод Popup, который сам по себе не является частью языка сценариев. Он входит в состав объектной модели WSH и поддерживается объектом WshShell. По своим характеристикам, он является аналогом функции MsgBox. Прежде всего, в сценарии нужно создать экземпляр объекта WshShеll. Для этого можно применить функцию CreateObject. Давайте посмотрим, на начальные строки для будущих примеров.
И так, создаем экземпляр компонента:
Теперь мы сможем использовать переменную WshShеll для вызова функции Popup. Теперь давайте рассмотрим общий синтаксис:
WshShell.Popup (текст, таймаут, заголовок, кнопки);
Тут передаются следующие параметры:
Текст – собственно, тот текст, что надо вывести в диалоге. Тут можно использовать конкатенацию (объединение) констант, подстрок и переменных.
Таймаут – время, через которое будет закрыто пользовательское окошко, если от пользователя не поступят команды на закрытие. Для отключения тайм аута надо присвоить значение 0.
Заголовок – собственно, заголовок создаваемого окна.
Кнопки – тут используются константы, которые задают вид и количество кнопок.
Сам метод возвращает код кнопки, которой пользователь закрыл окно. Теперь давайте рассмотрим по одному примеру как создавать диалоговое окно для VBScript и Jscript синтаксиса.
Как создавать диалоговые окна в Windows?
Как создавать диалоговые окна с помощью VBScript? Всем привет, в этом уроке я вам покажу, как быстро создавать диалоговые окна в Windows, с помощью которых мы так часто подшучиваем над своими коллегами. Я представлю небольшой обзор команд с пояснениями для того, чтобы вы не просто копировали диалоговые окна с сайта, а смогли сами импровизировать, одновременно обучаясь. Это будет знакомый вам по предыдущим компьютерным приколам скриптовый язык VBScript, и всё, что нам как всегда понадобится, это простой Блокнот, который мы, после заполнения кода, будем сохранять в укромном месте с расширением .vbs.
VBScript – это простой язык программирования, исполняемый в системе сценарием Windows Script Host. Легко кодируется в Блокноте, а лучше в специальных текстовых редакторах с расширенными возможностями, как например, AkelPad или Notepad ++ (они, в отличие от встроенного Блокнота, понимают русскую кодировку; выберите Кириллицу – Windows-1251). Именно эта связка сценария и скрипта используется Windows для того, чтобы создавать диалоговые окна . Это гораздо проще, чем использовать такие языки как С и С ++. Однако подробное знакомство с VBScript задачей настоящей статьи не ставилось; здесь я лишь приведу ряд конкретных примеров того как создавать диалоговые окна с более-менее осмысленным для читающего содержанием и вариантами развития событий по результатам действий.
Как создавать диалоговые окна с ошибкой?
Итак, создадим простое диалоговое окно с двумя кнопками. И создадим окно с псевдоошибкой. Откроем текстовый редактор, и создадим сообщение, в котором:
Кавычки и скобки обязательны. Значок “+” позволяет использовать в одном скрипте множественные функции окна. В поле «содержание ошибки» вы можете написать любое сообщение, которое впоследствии прочитает пользователь. А в поле «автор ошибки» напишите того, кто это сообщение якобы пришлёт. Ими могут быть сама система Windows, или сосед по офису. А может быть директор или администратор. Решать опять же вам. Останавливаться не буду, идём дальше. Вот каким будут выглядеть диалоговые окна после того, как вы сохраните документ в формате .vbs.
Поле «5+16» приказывает системе создавать диалоговые окна с ярлыком критической ошибки и двумя кнопками. Это, как видно, кнопки «повтор» и «отмена». Но как вы уже поняли, можно создавать диалоговые окна и с другими настройкам, и всё это благодаря комбинации цифр или чисел. Это – числовые выражения постоянных, отвечающие за выводимые кнопки, значки и режимы окна. Подробнее смотрим ниже:
Нажатие кнопок для указанного кода, и, конечно, числовых комбинаций ни к чему не приведёт, но вы в силах будете указать системе, сколько раз те или иные сообщения будут появляться. Для этого просмотрите статью Множественные сообщения об ошибке. Если понадобится перенести строки в диалоговых окнах, можно воспользоваться написанием скрипта в формате:
Диалоговые окна VBS: множество постоянных и переменных.
В простейшем написании скрипта именно знак “+” позволит применять сразу несколько параметров в одном скрипте. Например, для написания окна типа:
Просто повторите скрипт так:
Кстати, появление окна можно запустить по кругу, указав в скрипте команду на запуск его же по нажатию на любую из кнопок:
где скрипт.vbs и есть тот самый скрипт, лежащий, скажем, на Рабочем столе (C:\Users\1\Desktop\). При этом избавиться от окна можно будет только через Диспетчер задач. Скрипт может также содержать и какую-то другую одну или несколько команд. Например, пара вводимых переменных не просто создаст интерактивный диалог, но запустит программу. Например, браузер. Ну, или не запустит:
7 скриптов для Windows, которые помогут сэкономить время
Для исполнения следующих скриптов мы обратимся к PowerShell. Любой системный администратор (по профессии или в душе) знает его возможности и периодически пользуется, для всех остальных это просто интерфейс командной строки или иностранное слово. На популярных ресурсах вы можете найти уйму идей, как использовать PowerShell для развлечения и дела, здесь же мы рассмотрим лишь простые скрипты, которые помогут войти в курс дела.
Выключение и перезапуск
Итак, самая простая операция выключения вашего компьютера. Открываем блокнот, прописываем:
Сохраняем файл, как *.cmd (*- имя вашего файла, например shutdown.cmd) и не забудьте в типе выбрать “все файлы”. Всё, исполняемый файл по запуску выключит ваш компьютер. “-s”, в данном случае означает выключение, замените на “-r” — получите перезагрузку. “-t” — таймер, у нас он установлен на 0 секунд, но если установить на 60 — получите выключение через 60 секунд.
Удаляем ненужное
В различных сборках, предустановленных на компьютер или ноутбук, вы можете наткнуться на массу абсолютно ненужных пакетов приложений. Удалить их с помощью скрипта проще простого:
get-appxpackage -name *APPNAME* | remove-appxpackage
Как вы понимаете, *APPNAME* — название неинтересующей надстройки. Да, удалять эти пакеты можно стандартным путём или через специальные программы, но вы можете создать скрипт, который удалит их все одним двойным кликом.
Управляем процессами
Есть в PowerShell две полезные команды, которые позволят бороться с ветряными мельницами (процессами, снижающими быстродействие). Вывести их на экран можно просто прописав:
или информацию о конкретном сервисе под кодовым названием *NAME* (на этом месте должно быть название интересующего сервиса):
Но это можно сделать в диспетчере задач, а вот действительно полезным может оказаться создание файла, который по клику закрывал бы все процессы с повышенным потреблением ресурсов (браузеры, антивирусы и пр.). Для этого воспользуйтесь командой Stop-Service:
Stop-Service -Name *ANTIVIRUS*
Stop-Service -Name *BROWSER*
Названия для замены указаны в * *.
Переименовываем группу файлов
Ещё одна назойливая проблема: вы скопировали с фотоаппарата или телефона изображения. Огромная куча фотографий, которые называются однотипно вроде HGNMD034, где HGNMD — название общей директории, объединяющей файлы, например, отснятые за один день. Для того, чтобы сделать название этих файлов приятнее или иметь возможность объединить несколько папок, не получив при этом хронологическую путаницу из-за имен, можно использовать скрипт группового переименования:
$path = «$comp\desktop\journey\russia»
$filter = ‘*.jpg’
get-childitem -path $path -filter $filter |
rename-item -newname
В первой строке в кавычках укажите точный путь к файлам. Во второй строке — расширение файлов, подлежащих изменению. В последней строке вместо “HGNMD” — общее в названиях файлов, подлежащее замене, на что-то, вместо “RUSSIA” — имя, которое вы хотите присвоить. Если данный скрипт опять сохранить в качестве исполняемого файла, то подобные однотипные операции будут отнимать у вас всего несколько секунд времени.
Ищем файлы
Ещё одна простая задача, реализуемая на PowerShell — поиск файлов в директории. В данном случае рассмотрим поиск log-файлов:
Или чуть более сложный пример, когда поиск будет производиться ещё и в подпапках:
Get-ChildItem C:\Windows\* -Include *.log -Recurse -Force
Это чуть более правильная и полная запись, где “Include” — указывает на искомую часть, “Recurse” — на поиск во вложенных каталогах, “Force” — поиск включает в себя системные и скрытые файлы.
Справка
Итак, с общими принципами функционирования PowerShell мы более-менее разобрались. Если что-то непонятно — обратитесь к справочной информации следующим образом:
Это команда, которая выведет на экран все доступные команды с кратким описанием. Хотите подробнее? Нет ничего проще:
Get-Help -Name *CMDLET*
Где вместо *CMDLET* вставьте любую интересующую команду.
Находим данные
Теперь перейдём к простым скриптам, описанным чуть более сложными командами. Например, с помощью PowerShell вы можете выудить почти всю информацию о железе и комплектующих. Как вариант, вот скрипт для оценки уровня заряда аккумулятора:
Add-Type -AssemblyName System.Windows.Forms
[Windows.Forms.PowerStatus].GetConstructor(‘NonPublic, Instance’, $null, [Type[]]@(), $null ).Invoke($null)
Архитектура процессора удалённого компьютера:
[PSObject].Assembly.GetType( ‘System.Management.Automation.PsUtils’
).GetMethod(‘GetProcessorArchitecture’, [Reflection.BindingFlags]40
).Invoke($null, @())
Иногда важной задачей бывает проверка прав администратора у текущего пользователя. Вот простой способ на PowerShell:
[PSObject].Assembly.GetType(‘System.Management.Automation.Utils’).GetMethod(
‘IsAdministrator’, [Reflection.BindingFlags]40).Invoke($null, @())
На этом пока остановимся. Как вы наверное убедились, PowerShell не самый сложный, но очень полезный инструмент, который способен выполнять, как простейшие операции, так и достаточно сложные. Однако PowerShell не единственный инструмент для создания скриптов для Windows. Но об этом в следующий раз.
Если вы только недавно встали на путь программирования и ещё даже не пробовали поиграться с установленной операционной системой, то манипулирование с помощью скриптов может вызвать резонные вопросы необходимости и удобства. Однако, даже если опустить тот простой факт, что они помогают лучше понять, как функционирует ОС, в будущем при создании приложений, исполнение сценариев может оказаться крайне полезным навыком.
Для исполнения следующих скриптов мы обратимся к PowerShell. Любой системный администратор (по профессии или в душе) знает его возможности и периодически пользуется, для всех остальных это просто интерфейс командной строки или иностранное слово. На популярных ресурсах вы можете найти уйму идей, как использовать PowerShell для развлечения и дела, здесь же мы рассмотрим лишь простые скрипты, которые помогут войти в курс дела.
Выключение и перезапуск
Итак, самая простая операция выключения вашего компьютера. Открываем блокнот, прописываем:
Сохраняем файл, как *.cmd (*- имя вашего файла, например shutdown.cmd) и не забудьте в типе выбрать “все файлы”. Всё, исполняемый файл по запуску выключит ваш компьютер. “-s”, в данном случае означает выключение, замените на “-r” — получите перезагрузку. “-t” — таймер, у нас он установлен на 0 секунд, но если установить на 60 — получите выключение через 60 секунд.
Удаляем ненужное
В различных сборках, предустановленных на компьютер или ноутбук, вы можете наткнуться на массу абсолютно ненужных пакетов приложений. Удалить их с помощью скрипта проще простого:
get-appxpackage -name *APPNAME* | remove-appxpackage
Как вы понимаете, *APPNAME* — название неинтересующей надстройки. Да, удалять эти пакеты можно стандартным путём или через специальные программы, но вы можете создать скрипт, который удалит их все одним двойным кликом.
Управляем процессами
Есть в PowerShell две полезные команды, которые позволят бороться с ветряными мельницами (процессами, снижающими быстродействие). Вывести их на экран можно просто прописав:
или информацию о конкретном сервисе под кодовым названием *NAME* (на этом месте должно быть название интересующего сервиса):
Но это можно сделать в диспетчере задач, а вот действительно полезным может оказаться создание файла, который по клику закрывал бы все процессы с повышенным потреблением ресурсов (браузеры, антивирусы и пр.). Для этого воспользуйтесь командой Stop-Service:
Stop-Service -Name *ANTIVIRUS*
Stop-Service -Name *BROWSER*
Названия для замены указаны в * *.
Переименовываем группу файлов
Ещё одна назойливая проблема: вы скопировали с фотоаппарата или телефона изображения. Огромная куча фотографий, которые называются однотипно вроде HGNMD034, где HGNMD — название общей директории, объединяющей файлы, например, отснятые за один день. Для того, чтобы сделать название этих файлов приятнее или иметь возможность объединить несколько папок, не получив при этом хронологическую путаницу из-за имен, можно использовать скрипт группового переименования:
$path = «$comp\desktop\journey\russia»
$filter = ‘*.jpg’
get-childitem -path $path -filter $filter |
rename-item -newname
В первой строке в кавычках укажите точный путь к файлам. Во второй строке — расширение файлов, подлежащих изменению. В последней строке вместо “HGNMD” — общее в названиях файлов, подлежащее замене, на что-то, вместо “RUSSIA” — имя, которое вы хотите присвоить. Если данный скрипт опять сохранить в качестве исполняемого файла, то подобные однотипные операции будут отнимать у вас всего несколько секунд времени.
Ищем файлы
Ещё одна простая задача, реализуемая на PowerShell — поиск файлов в директории. В данном случае рассмотрим поиск log-файлов:
Или чуть более сложный пример, когда поиск будет производиться ещё и в подпапках:
Get-ChildItem C:\Windows\* -Include *.log -Recurse -Force
Это чуть более правильная и полная запись, где “Include” — указывает на искомую часть, “Recurse” — на поиск во вложенных каталогах, “Force” — поиск включает в себя системные и скрытые файлы.
Справка
Итак, с общими принципами функционирования PowerShell мы более-менее разобрались. Если что-то непонятно — обратитесь к справочной информации следующим образом:
Это команда, которая выведет на экран все доступные команды с кратким описанием. Хотите подробнее? Нет ничего проще:
Get-Help -Name *CMDLET*
Где вместо *CMDLET* вставьте любую интересующую команду.
Находим данные
Теперь перейдём к простым скриптам, описанным чуть более сложными командами. Например, с помощью PowerShell вы можете выудить почти всю информацию о железе и комплектующих. Как вариант, вот скрипт для оценки уровня заряда аккумулятора:
Add-Type -AssemblyName System.Windows.Forms
[Windows.Forms.PowerStatus].GetConstructor(‘NonPublic, Instance’, $null, [Type[]]@(), $null ).Invoke($null)
Архитектура процессора удалённого компьютера:
[PSObject].Assembly.GetType( ‘System.Management.Automation.PsUtils’
).GetMethod(‘GetProcessorArchitecture’, [Reflection.BindingFlags]40
).Invoke($null, @())
Иногда важной задачей бывает проверка прав администратора у текущего пользователя. Вот простой способ на PowerShell:
[PSObject].Assembly.GetType(‘System.Management.Automation.Utils’).GetMethod(
‘IsAdministrator’, [Reflection.BindingFlags]40).Invoke($null, @())
На этом пока остановимся. Как вы наверное убедились, PowerShell не самый сложный, но очень полезный инструмент, который способен выполнять, как простейшие операции, так и достаточно сложные. Однако PowerShell не единственный инструмент для создания скриптов для Windows. Но об этом в следующий раз.