Самый простой способ сделать это - 1) создать ярлык и 2) перетащить его. Я не делаю много управляемого кода вообще, поэтому я не могу сказать, есть ли какая-либо встроенная поддержка для объекта IShellLink. Если нет, то кто-то, вероятно, уже сделал работу и создал оболочку. Таким образом, вы можете создать объект ShellLink и заполнить его указанием пути к вашему приложению, параметрами и т. Д. И сохранить его где-нибудь (возможно, во временной папке). Тогда вы бы инициировали операцию перетаскивания примерно так:
private void Form1_MouseDown(object sender, MouseEventArgs e)
{
if ((e.Button & MouseButtons.Left) == MouseButtons.Left)
{
// left mouse button clicked; begin drag
// create data object with FileDrop format (list of files to be dropped)
DataObject data = new DataObject();
System.Collections.Specialized.StringCollection paths = new System.Collections.Specialized.StringCollection();
paths.Add(@"<temp_path>\My New Shortcut.lnk");
data.SetFileDropList(paths);
// begin the drag, indicating it is a copy operation
DragDropEffects effect = DoDragDrop(data, DragDropEffects.Copy);
}
}
Затем, когда пользователь удалит его (например, на своем рабочем столе), он скопирует файл ярлыка из временной папки.