Приветствую всех читателей блога scriptcoding.ru. Сегодня мы рассмотрим работу с ярлыками в Windows. Сначала мы рассмотрим теоретические основы: определение, создание и параметры ярлыков Windows, далее мы приступим к программированию и программным методам для работы с ярлыками.
Работа с ярлыками – теоретические основы
Сами по себе ярлычки являются ссылками на файлы, папки, диски, сетевые устройства и так далее. Удобство заключается в том, что достаточно один раз создать ссылку на нужный объект, поместить её в удобном месте, и тем самым быстро получить доступ к заданному объекту. Работа с ярлыками начинается с их создания в указанном месте:
- Рабочий стол – Тут всё довольно просто, сначала мы щелкаем правой кнопкой мыши по нужному файлу или папке. Из контекстного меню выбираем пункт «Отправить/Рабочий стол«, в итоге на рабочем столе будет создана ссылка для заданного элемента.
- Меню Пуск – При работе с ярлыками Windows, может возникнуть потребность создать их в меню Пуск. Тут всё довольно просто, перетаскиваем нужный файл на кнопку Пуск, ждем, пока меню раскроется, далее перетаскиваем элемент в нужное место (например, «Пуск/ Программы/ Стандартные«), как только мы отпустим правую кнопку мыши, в заданном месте появится ярлычок Windows.
Хорошо, с теоретической частью мы закончили, теперь можно приступить к программированию. Мы рассмотри метод объекта WScript Shell – CreateShortcut, который относится к объектной модели Windows Script Host. CreateShortcut предназначен как для работы с ярлыками Windows – расширение .lnk, так и с теми, которые ссылаются на сетевой ресурс – расширение .url. Прежде, чем получить доступ к методу CreatеShоrtcut, надо сначала создать ссылку на класс WScript_Shell, которая будет храниться в нужной переменной. Поскольку мы можем работать как с локальными, так и с сетевыми ресурсами, то в первом случае лучше дать переменной имя вида WshShorcut, а во втором – WshUrlShorcut.
Давайте посмотрим на общий синтаксис и логику работы метода:
CreateShortcut(str) – Параметр str хранит в себе имя и путь для создаваемого или изменяемого ярлыка. После того, как мы прописали местоположение и создали переменную, мы получаем одновременно доступ к двум объектам, например:
Язык vbscript
Dim WshShorcut, WshUrlShorcut Set WshShorcut = WScript. CreateObject("WScript.Shell") Set WshUrlShorcut = WScript. CreateObject("WScript.Shell") |
Язык jscript
var WshShorcut, WshUrlShorcut WshShorcut = WScript. CreateObject("WScript.Shell"); WshUrlShorcut = WScript. CreateObject("WScript.Shell"); |
Нужно понимать, что имена WshShorcut и WshUrlShorcut являются условными, то есть, мы можем назначить любое другое имя переменной.
Работа с ярлыками Windows – свойства класса
После того как мы использовали CrеаteShоrtсut, что бы показать как создать ярлык Windows, мы тем самым сохранили в заданной переменной ссылку на новый класс. Давайте рассмотрим сначала методы и свойства такого объекта, который отвечает за работу с ярлыками.
Arguments – Данное свойство задает аргументы командной строки для приложения, на которое надо ссылаться. Дело в том, что для некоторых приложений можно прописывать аргументы, например, мы можем показать как создать ярлык для командного процессора cmd, и с помощью аргументов указать, что бы сразу вывелась справка по команде xcopy.
Description – В это свойство мы можем прописать описание.
FullName – Полное местоположение к ярлычку.
HotKey – Данное свойство отвечает за «Горячую» клавишу, как правило, тут прописываются комбинации клавиш для запуска того приложения, на которое надо сослаться.
IconLocation – Хранит в себе местоположение иконки.
TargetPath – Местоположение файла, на который мы будем ссылаться.
WindowStyle – Определяет параметры окна для приложения при его запуске, может принимать только целые значения:
- 4 – стандартный размер окна
- 3 – развернутый вид (максимизировано)
- 7 – свернутое окно (минимизировано)
WorkingDirectory – Имя каталога для приложения, на которое мы ссылаемся.
Save() – Данный метод является обязательным, он сохраняет все заданные настройки при работе с ярлыками и создает его.
Хорошо, теперь давайте напишем такой пример на языке vbscript:
'****************************************************** ' wscript_shell_CreateShortcut ' Работа с ярлыками ' WshShorcut.vbs '****************************************************** Option Explicit dim WshShell1 set WshShell1 = WScript.CreateObject("WScript.Shell") Sub CreateDesktop() dim DPath, LinkDesktop ' местоположение рабочего_стола DPath= WshShell1.SpecialFolders("Desktop") set LinkDesktop = WshShell1.CreateShortcut(DPath & "\notepad.lnk") With LinkDesktop ' в качестве аргумента передаем путь к сценарию .Arguments = Wscript.ScriptFullName ' Описание .Description = "Запуск блокнота и передача ему содержимого сценария" ' Назначаем горячие клавиши .HotKey = "CTRL+ALT+N" ' адрес к файлу значка .IconLocation = WshShell1.ExpandEnvironmentStrings("%windir%\notepad.exe, 0") ' адрес исполняемого ресурса .TargetPath = WshShell1.ExpandEnvironmentStrings("%windir%\System32\notepad.exe") ' определяем развернутый вид .WindowStyle = 3 ' описание рабочего_каталога для исполняемого ресурса .WorkingDirectory = WshShell1.ExpandEnvironmentStrings("%windir%\System32") ' сохраняем все настройки и показываем, как создать ярлык .Save() End With End Sub Sub CreateStartup() dim DPath, LinkStartup ' путь_к меню Пуск/Программы DPath= WshShell1.SpecialFolders("Programs") set LinkStartup = WshShell1.CreateShortcut(DPath & "\calc.lnk") ' путь_к запускаемому ресурсу LinkStartup.TargetPath = WshShell1.ExpandEnvironmentStrings("%windir%\System32\calc.exe") LinkStartup.Save() End Sub Call CreateDesktop MsgBox "Создан_ярлык_на_рабочем_столе" Call CreateStartup MsgBox "Создан_ярлык в меню Пуск/Программы" |
В самом начале мы объявляем переменную WshShell, далее с помощью ключевого слова set мы формируем ссылку на экземпляр объекта Wscript_Shell. Далее мы создали две процедуры: CreateDesktop и CreateStartupt. Давайте рассмотрим каждую по отдельности:
CreateDesktop – Назначение данной процедуры, показывает как создать ярлык для программы Блокнот на рабочем столе. Видим, что тут мы объявили переменную DPath, которая хранит в себе полный путь к рабочему столу, для его определения мы использовали SpecialFolders (подробней о нем в статье «Объект Wscript Shell метод SpecialFolders«), еще одна переменная LinkDeskop, хранит в себе ссылку на класс, который мы получаем, при использовании CreateShorcut класса Wscript Shell. Работа с ярлыками. Как уже упоминалось, методу нужно передать имя файла-ярлыка и полный путь к нему (если прописать только имя, то файл-ярлык будет создан в той папке, из которой запущен текущий сценарий). Далее уже происходит назначение нужных данных свойствам. Стоит всегда помнить, что если не использовать Save(), то ярлычок не будет создан.
Обратите внимание на свойство Arguments – тут мы прописали путь_к нашему сценарию, поэтому, при запуске файла-ярлыка, откроется блокнот, и в нем отобразится содержимое сценария.
CreateStartup – Данная процедура показывает как создать ярлык в меню «Пуск/Программы» для программы Калькулятор. Тут мы прописали только одно свойство, которое отвечает за путь_к_приложению.
В самом конце для запуска наших процедур мы используем ключевое слово call.
Хорошо, а вот пример использования CrеаteShоrtсut на языке jscript, он работает аналогично предыдущему примеру, я только изменил имена создаваемых ярлычков:
//****************************************************** // wscript_shell_CreateShortcut // Работа с ярлыками // WshShorcut.js //****************************************************** var WshShell; WshShell = WScript.CreateObject("WScript.Shell"); function CreateDesktop(){ var DPath1, LinkDesktop; // путь_к_рабочему_столу DPath1= WshShell.SpecialFolders("Desktop"); LinkDesktop = WshShell.CreateShortcut(DPath1 + "\\notepad_new.lnk"); with(LinkDesktop){ // в качестве аргумента передаем местоположение сценария Arguments = WScript.ScriptFullName; // Описание Description = "Запуск блокнота и передача ему содержимого сценария"; // Назначаем горячие клавиши HotKey = "CTRL+ALT+N"; // адрес к файлу значка IconLocation = WshShell.ExpandEnvironmentStrings("%windir%\\notepad.exe, 0"); // адрес к запускаемому ресурсу TargetPath = WshShell.ExpandEnvironmentStrings("%windir%\\System32\notepad.exe"); // определяем развернутый вид WindowStyle = 3; // описание рабочего_каталога для исполняемого ресурса WorkingDirectory = WshShell.ExpandEnvironmentStrings("%windir%\\System32"); // сохраняем все настройки и показываем, как создать ярлык Save(); } return true; } function CreateStartup(){ var DPath1, LinkStartup; // путь_к меню Пуск/Программы DPath= WshShell.SpecialFolders("Programs"); LinkStartup = WshShell.CreateShortcut(DPath1 + "\\calc_new.lnk"); // адрес к запускаемому приложению LinkStartup.TargetPath = WshShell.ExpandEnvironmentStrings("%windir%\\System32\\calc.exe"); LinkStartup.Save(); } CreateDesktop(); WScript.Echo ("Создан_ярлык_на_рабочем_столе"); CreateStartup(); WScript.Echo ("Создан_ярлык в меню Пуск/Программы"); |
Как я упомянул выше, используя метод CreateShorcut Wscript_Shell класса, мы можем создавать не только стандартные ярлыки для локальных, но и для сетевых элементов. Работа с Windows ярлыками. В таком случае, как правило, вместо имени WshShorcut прописывают WshUrlShorcut, расширения создаваемого файла меняются на .url. Свойства и метод остаются теми же, но только в свойстве TargetPath мы указываем URL адрес.