Приветствую всех читателей блога 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 – свойства класса
![Работа с ярлыками Работа с windows ярлыками](https://scriptcoding.ru/picture/rabota-s-yarlykami-1.png)
После того как мы использовали 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(), то ярлычок не будет создан.
![Как создать ярлык Как создать в Windows ярлык](https://scriptcoding.ru/picture/rabota-s-yarlykami-2.png)
Обратите внимание на свойство 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 адрес.