Объект WScript.Shell метод CreateShortcut — Работа с ярлыками

Объект WScript.Shell метод CreateShortcut — Работа с ярлыками Объектная модель Windows Script Host

Приветствую всех читателей блога 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 ярлыками

После того как мы использовали 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 ярлык

Скачать архив с примерами

Обратите внимание на свойство 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 адрес.

Оцените статью
Технологии программирования и ведение блога
Добавить комментарий