OriginalGriff
Попробовать это:
[ComImport]
[Guid("00021401-0000-0000-C000-000000000046")]
internal class ShellLink
{
}
[ComImport]
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
[Guid("000214F9-0000-0000-C000-000000000046")]
internal interface IShellLink
{
void GetPath([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszFile, int cchMaxPath, out IntPtr pfd, int fFlags);
void GetIDList(out IntPtr ppidl);
void SetIDList(IntPtr pidl);
void GetDescription([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszName, int cchMaxName);
void SetDescription([MarshalAs(UnmanagedType.LPWStr)] string pszName);
void GetWorkingDirectory([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszDir, int cchMaxPath);
void SetWorkingDirectory([MarshalAs(UnmanagedType.LPWStr)] string pszDir);
void GetArguments([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszArgs, int cchMaxPath);
void SetArguments([MarshalAs(UnmanagedType.LPWStr)] string pszArgs);
void GetHotkey(out short pwHotkey);
void SetHotkey(short wHotkey);
void GetShowCmd(out int piShowCmd);
void SetShowCmd(int iShowCmd);
void GetIconLocation([Out, MarshalAs(UnmanagedType.LPWStr)] StringBuilder pszIconPath, int cchIconPath, out int piIcon);
void SetIconLocation([MarshalAs(UnmanagedType.LPWStr)] string pszIconPath, int iIcon);
void SetRelativePath([MarshalAs(UnmanagedType.LPWStr)] string pszPathRel, int dwReserved);
void Resolve(IntPtr hwnd, int fFlags);
void SetPath([MarshalAs(UnmanagedType.LPWStr)] string pszFile);
}
private void CreateLink(string pathToApplication, string description, string linkname = "MyApplication.lnk")
{
IShellLink shortcut = (IShellLink)new ShellLink();
string desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
shortcut.SetDescription(description);
shortcut.SetPath(pathToApplication);
System.Runtime.InteropServices.ComTypes.IPersistFile f = (System.Runtime.InteropServices.ComTypes.IPersistFile) shortcut;
f.Save(Path.Combine(desktop, linkname), false);
}
[edit]я ненавижу разметку![/редактировать]
Member 12462239
Черт возьми, может быть, вы добавите несколько комментариев или сделаете это немного проще для понимания?
OriginalGriff
Вы шутите - это один из способов! Все, что вам нужно сделать, это вызвать CreateLink и передать ему параметры...
Все остальное-это просто координация с внешними структурами, отсюда и оформление Комимпорта...
OriginalGriff
Поэтому сделайте метод статичным, если вы вызываете его непосредственно из main...
Кажется, что вы пытаетесь бежать, прежде чем сможете ходить - вы, вероятно, должны знать некоторые из этих вещей, если вы были на своем курсе в течение нескольких недель.