22 октября 2015
Кравченко Виктор

Как программно создать ярлык программы

VB.NET Полезные функции Visual Studio .NET
01

Существует класс Enviroment, позволяющий работать с «папками специального назначения» (Special Folders) — он помогает корректно взаимодействовать с ними при создании ярлыков.

О перечислении Special Folders можно почитать в MSDN — Environment.SpecialFolder Enumeration
02

Для создания ярлыков существует класс WshShell. Для его использования необходимо в References проекта добавить COM-библиотеку — Windows Script Host Object Model (правой кнопкой по названию проекта — Properties — вкладка Referenses — кнопка Add... — вкладка COM — библиотека Windows Script Host Object Model — ОК), и добавить в коде ссылку на эту библиотеку:

03 VB.NET
1
Imports IWshRuntimeLibrary
04

Далее все очень просто, пример добавления ярлыка в папку автозагрузки:

05 VB.NET
1
2
3
4
5
6
slPath = IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Startup), Application.ExecutablePath) Dim shell As New WshShell Dim link As IWshShortcut = shell.CreateShortcut(slPath) link.TargetPath = Application.ExecutablePath link.WorkingDirectory = Application.StartupPath link.Save()
06

Класс-обертка для более удобного взаимодействия с ярлыками:

07 VB.NET
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
Public Class Shortcut
Public Shared Function Create(folder As Environment.SpecialFolder, filename As String) As Boolean Dim fiShellLink As FileInfo = GetShellLinkFileInfo(folder, filename) Try If Not Exists(folder, filename) Then Dim shell As New WshShell Dim link As IWshShortcut = shell.CreateShortcut(fiShellLink.FullName) link.TargetPath = Application.ExecutablePath link.WorkingDirectory = Application.StartupPath
'link.WindowStyle = 1 'link.IconLocation = Application.ExecutablePath & ", 0" 'link.Arguments = Empty.String
link.Save() Else Return True End If Catch ex As Exception MsgBox("Проблемы с созданием ярлыка: " + fiShellLink.FullName) End Try Return False End Function
Public Shared Function Delete(folder As Environment.SpecialFolder, filename As String) As Boolean If Exists(folder, filename) Then Dim fiShellLink As FileInfo = GetShellLinkFileInfo(folder, filename) Try fiShellLink.Delete() Return True Catch ex As Exception MsgBox("Проблемы с созданием ярлыка: " + fiShellLink.FullName) Return False End Try End If Return True End Function
Public Shared Function Exists(folder As Environment.SpecialFolder, filename As String) As Boolean Dim fiShellLink As FileInfo = GetShellLinkFileInfo(folder, filename) Return fiShellLink.Exists End Function
Private Shared Function GetShellLinkFileInfo(folder As Environment.SpecialFolder, filename As String) As FileInfo Dim fiApp As FileInfo = New FileInfo(filename) Dim slFileName As String = fiApp.Name.Substring(0, fiApp.Name.Length - fiApp.Extension.Length) + ".lnk" Dim slPath As String = IO.Path.Combine(Environment.GetFolderPath(folder), slFileName) Return New FileInfo(slPath) End Function
End Class
08

Использование:

09 VB.NET
1
2
3
4
5
6
7
8
9
10
11
' Функция, осуществляющая создание/удаление ярлыка исполняемого приложения в папку Автозапуск, меню Пуск
Public Shared Function SetAutorunAsShortcut(Autorun As Boolean, Optional IsCurrentUser As Boolean = True) If Autorun Then Return Shortcut.Create(Environment.SpecialFolder.Startup, Application.ExecutablePath) Else Return Shortcut.Delete(Environment.SpecialFolder.Startup, Application.ExecutablePath) End If End Function
' Или добавить иконку на рабочий стол Return AppConfig.Shortcut.Create(Environment.SpecialFolder.DesktopDirectory, Application.ExecutablePath)
10

Также стоит обратить внимание на прочие свойства объекта IWshShortcut:

11
[a href="https://msdn.microsoft.com/en-us/library/yf7kaky2(v=vs.84).aspx"]Arguments[/a]Добавляет к пути файла аргументы предусмотренные приложением, например "/Short" — запуск с урезанным интерфейсом
[a href="https://msdn.microsoft.com/en-us/library/3zb1shc6(v=vs.84).aspx"]HotKey[/a]Задает комбинацию «горячих» клавиш, например "Ctrl+Alt+e"
[a href="https://msdn.microsoft.com/en-us/library/3s9bx7at(v=vs.84).aspx"]IconLocation[/a]Указывает на файл содержащий иконку, и через запятую индекс иконки, например System.Reflection.Assembly.GetExecutingAssembly.Location() & ", 0"
[a href="https://msdn.microsoft.com/en-us/library/w88k7fw2(v=vs.84).aspx"]WindowsStyle[/a]Отвечает за размер окна приложения при запуске:
1 — обычный размер (WindowState.Normal),
3 — окно развернуто на весь экран (WindowState.Maximized),
7 — окно свернуто (WindowState.Minimized)
Подробнее о свойствах на MSDN — Properties (Windows Script Host)
12

С учетом этих и других свойств можно модифицировать под собственные нужды, представленный выше класс Shortcut.

14

Похожие запросы:

  • Как создать ярлык/иконку для exe-шника
  • create shortcut using .net
  • how to create shortcut on desktop in vb.net without installer
  • Create shortcuts with a .NET application
  • Create a shortcut using IWshRuntimeLibrary
  • Create a shortcut from code
  • Create Desktop or Start Menu Shortcuts
  • Creating a shortcut on the desktop in vb.net
comments powered by HyperComments