天天看點

使用C#建立快捷方式

原文: 使用C#建立快捷方式

  在Windows中建立快捷方式很簡單,直接用右鍵點選檔案或檔案夾,選擇建立快捷方式即可。如果想用C#代碼的方式建立,就沒有那麼友善了,因為.NET架構沒有提供直接建立快捷方式的方法。

  首先我們看一下快捷方式是什麼。對快捷方式點右鍵,選擇屬性菜單,在彈出的屬性對話框的正常Tab中可以看到,檔案類型是快捷方式(.lnk),是以快捷方式本質上是lnk檔案。

使用C#建立快捷方式
  切換到快捷方式Tab,可以看到該快捷方式的相關屬性(如下圖)。

  • 名稱:在圖示後面的文本,該快捷方式的檔案名稱
  • 目标類型:該快捷方式指向目标的類型
  • 目标位置:該快捷方式指向目标的上級檔案夾名稱
  • 目标:該快捷方式指向目标的完整路徑。
  • 起始位置:該快捷方式指向目标的上級檔案夾完整路徑。
  • 快捷鍵:可設定快捷鍵打開該快捷方式,快捷鍵是Ctrl、Alt、Shift和字母鍵的組合。
  • 運作方式:通過該快捷方式打開目标之後運作的視窗大小。
  • 備注:對該快捷方式的備注資訊,當滑鼠停留在快捷方式上時會顯示。
使用C#建立快捷方式

  (題外話:IE的快捷方式又把我惡心到了,目标後面緊跟着360的垃圾網址。這就是運作浏覽器時自動打開某個網址的一種方式,極度鄙視這種流氓行為。)

  使用C#建立快捷方式就是要建立一個lnk檔案,并設定相關的屬性。.NET架構本身是沒有提供方法的,需要引入IWshRuntimeLibrary。在添加引用對話框中搜尋Windows Script Host Object Model,選擇之後添加到Project的引用中。

使用C#建立快捷方式

  詳細代碼如下:(文章來源:http://www.cnblogs.com/conexpress/p/ShortcutCreator.html)

1 using IWshRuntimeLibrary;
 2 using System.IO;
 3 using System;
 4 
 5 namespace MyLibrary
 6 {
 7     /// <summary>
 8     /// 建立快捷方式的類
 9     /// </summary>
10     /// <remarks></remarks>
11     public class ShortcutCreator
12     {
13         //需要引入IWshRuntimeLibrary,搜尋Windows Script Host Object Model
14 
15         /// <summary>
16         /// 建立快捷方式
17         /// </summary>
18         /// <param name="directory">快捷方式所處的檔案夾</param>
19         /// <param name="shortcutName">快捷方式名稱</param>
20         /// <param name="targetPath">目标路徑</param>
21         /// <param name="description">描述</param>
22         /// <param name="iconLocation">圖示路徑,格式為"可執行檔案或DLL路徑, 圖示編号",
23         /// 例如System.Environment.SystemDirectory + "\\" + "shell32.dll, 165"</param>
24         /// <remarks></remarks>
25         public static void CreateShortcut(string directory, string shortcutName, string targetPath,
26             string description = null, string iconLocation = null)
27         {
28             if (!System.IO.Directory.Exists(directory))
29             {
30                 System.IO.Directory.CreateDirectory(directory);
31             }
32 
33             string shortcutPath = Path.Combine(directory, string.Format("{0}.lnk", shortcutName));
34             WshShell shell = new WshShell();
35             IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(shortcutPath);//建立快捷方式對象
36             shortcut.TargetPath = targetPath;//指定目标路徑
37             shortcut.WorkingDirectory = Path.GetDirectoryName(targetPath);//設定起始位置
38             shortcut.WindowStyle = 1;//設定運作方式,預設為正常視窗
39             shortcut.Description = description;//設定備注
40             shortcut.IconLocation = string.IsNullOrWhiteSpace(iconLocation) ? targetPath : iconLocation;//設定圖示路徑
41             shortcut.Save();//儲存快捷方式
42         }
43 
44         /// <summary>
45         /// 建立桌面快捷方式
46         /// </summary>
47         /// <param name="shortcutName">快捷方式名稱</param>
48         /// <param name="targetPath">目标路徑</param>
49         /// <param name="description">描述</param>
50         /// <param name="iconLocation">圖示路徑,格式為"可執行檔案或DLL路徑, 圖示編号"</param>
51         /// <remarks></remarks>
52         public static void CreateShortcutOnDesktop(string shortcutName, string targetPath, 
53             string description = null, string iconLocation = null)
54         {
55             string desktop = Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);//擷取桌面檔案夾路徑
56             CreateShortcut(desktop, shortcutName, targetPath, description, iconLocation);
57         }
58 
59     }
60 }      

  如果需要擷取快捷方式的屬性,可以調用WshShell對象的CreateShortcut方法,傳入完整的快捷方式檔案路徑即可得到已有快捷方式的IWshShortcut實體。修改快捷方式的屬性,則修改IWshShortcut實體的屬性,然後調用Save方法即可。

參考資料:

http://developer.51cto.com/art/200908/147760.htm