C#

УЧЕБНЫЕ МАТЕРИАЛЫ ПО ПРОГРАММИРОВАНИЮ, КРЕКИНГУ, HTML, CSS, ОФИСНЫМ ПРИЛОЖЕНИЯМ

[Главная страница] [Контакты]

Программирование для Windows


Создание ярлыков на рабочем столе или в меню "Пуск"

ЗАДАЧА
Добавить новый ярлык на рабочий стол или в меню «Пуск».

РЕШЕНИЕ
Используйте механизм COM Interop для доступа к компоненту Windows Script Host, предоставляющему метод WshShell.CreateShortcut.

ОБСУЖДЕНИЕ
Программно создать файл ярлыка можно по-разному. Вы можете применить неуправляемый вызов унаследованного API, создать файл вручную (при этом надо хорошо понимать его формат) или разработать специализированную программу установки Windows Installer. Проще всего использовать компонент Windows Script Host из состава ОС Windows. Взаимодействовать с этим компонентом СОМ можно через СОМ Interop. Для этого нужно лишь добавить на него ссылку.

w1-1

Создать новый ярлык с помощью Windows Script Host довольно легко. Сначала вам следует создать объект WshShell, после чего вы можете использовать набор WshShell.SpecialFolders для получения пути к любой из следующих папок:

  • AllUsersDesktop;
  • AllUsersStartMenu;
  • AllUsersPrograms;
  • AllUsersStartup;
  • Desktop;
  • Favorites;
  • Fonts;
  • MyDocuments;
  • NetHood;
  • PrintHood;
  • Programs;
  • Recent;
  • SendTo;
  • StartMenu;
  • Startup;
  • Templates.

Получив нужный путь, можно вызвать метод WshShell.CreateShortcut для создания объекта IWshShortcut. Затем вы можете сконфигурировать ярлык, задав свойства объекта IWshShprtcut, и вызвать его метод Save ддя сохранения окончательного результата.

Вот полный код программы, создающей ярлык для Блокнота. На форме создайте кнопку.

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using IWshRuntimeLibrary; // !!!

namespace CreateShortCut
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            // Создание объекта оболочки Windows Script Host (WSH shell object)
            WshShell WshShell = new WshShell();
            string DesktopDir = (string)WshShell.SpecialFolders.Item("Desktop");
            IWshShortcut Shortcut;

            // Файлы ярлыков имеют (скрытое) расширение .lnk
            Shortcut = (IWshShortcut)WshShell.CreateShortcut(DesktopDir + "\\NotepadShortcut.lnk");

            // Задание некоторых простых свойств ярдыка.
            Shortcut.TargetPath = "c:\\Windows\\notepad.exe";
            Shortcut.WindowStyle = 1;
            Shortcut.Hotkey = "Ctrl+Shift+N";
            Shortcut.Description = "Run Notepad";
            Shortcut.WorkingDirectory = DesktopDir;

            // Значком ярлыка будет первый значок из файла notepad.exe
            Shortcut.IconLocation = "notepad.exe, 0";
            
            // Сохранение файла ярлыка
            Shortcut.Save();

            Text = "Ярлык создан";
        }
    }
}

Вы также можете создавать ярлыки, ссылающиеся на Web-сайты (и даже вставлять их в меню Избранное). Для этого нужно просто изменить свойство TargetPath:

Shortcut = (IWshShortcut)WshShell.CreateShortcut(DesktopDir + "\\Google.lnk");

Shortcut.TargetPath = "https://www.google.com.ua/";

// (Код задания других параметров опущен)

Shortcut.Save();

 

Используемая литература:

  1. Занимательное программирование на Bisual Basic.NET: Климов А.П.
  2. Программирование для Microsoft Windows на C#: Чарльз Петцольд.
  3. Рецепты программирования на Visual Basic.NET: Мэтью Макдональд.