using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Runtime.InteropServices;

namespace CreateShortcut_CS
{
    public partial class Form1 : Form
    {
        /// <summary>
        /// Функция для создания ярлыка
        /// </summary>
        /// <param name="szShortcut">Строка, содержащая
        /// путь и имя создаваемого ярлыка.
        ///</param>
        /// <param name="szTarget">Строка, содержащая
        /// путь и аргументы для для ярлыка.
        /// Размер строки ограничен 256 символами.
        /// </param>
        /// <returns>В успешном случае возвращается TRUE,
        /// в случае ошибки возвращается FALSE
        /// </returns>
        [DllImport("coredll.dll", EntryPoint = "SHCreateShortcut")]
        private static extern bool SHCreateShortcut(string szShortcut, string szTarget);

        [DllImport("coredll.dll")]
        static extern bool SHGetShortcutTarget(
            string szShortcut, 
            StringBuilder szTarget, 
            int cbMax);

        public Form1()
        {
            InitializeComponent();
            #if DEBUG
                MinimizeBox = false;
            #else       
                MinimizeBox = true;
            #endif
        }

        private void butCreateShortcut_Click(object sender, EventArgs e)
        {
            // Путь к папке Мои документы
            string myDocPath = Environment.GetFolderPath(Environment.SpecialFolder.Personal);
            // путь ярлыка к калькулятору
            string shortcutPath = myDocPath + "\\shortcut.lnk";
            // Создаем ярлык на калькулятор в папке Мои документы
            bool success = SHCreateShortcut(shortcutPath, "\\Windows\\calc.exe\"");
        }

        private void butGetShortcutPath_Click(object sender, EventArgs e)
        {
            // Полное имя ярлыка
            string shortcutPath = "\\My Documents\\shortcut.lnk";
            StringBuilder sbTarget = new StringBuilder(260);
            // вызываем функцию для получения ссылки, которая содержится в sbTarget
            SHGetShortcutTarget(shortcutPath, sbTarget, sbTarget.Capacity);
            MessageBox.Show(sbTarget.ToString());
        }
    }
}