使用C#創建快捷方式
在Windows中創建快捷方式很簡單,直接用右鍵點擊文件或文件夾,選擇創建快捷方式即可。如果想用C#代碼的方式創建,就沒有那么方便了,因為.NET框架沒有提供直接創建快捷方式的方法。
首先我們看一下快捷方式是什么。對快捷方式點右鍵,選擇屬性菜單,在彈出的屬性對話框的常規Tab中可以看到,文件類型是快捷方式(.lnk),所以快捷方式本質上是lnk文件。

切換到快捷方式Tab,可以看到該快捷方式的相關屬性(如下圖)。
- 名稱:在圖標后面的文本,該快捷方式的文件名稱
- 目標類型:該快捷方式指向目標的類型
- 目標位置:該快捷方式指向目標的上級文件夾名稱
- 目標:該快捷方式指向目標的完整路徑。
- 起始位置:該快捷方式指向目標的上級文件夾完整路徑。
- 快捷鍵:可設定快捷鍵打開該快捷方式,快捷鍵是Ctrl、Alt、Shift和字母鍵的組合。
- 運行方式:通過該快捷方式打開目標之后運行的窗口大小。
- 備注:對該快捷方式的備注信息,當鼠標停留在快捷方式上時會顯示。

(題外話:IE的快捷方式又把我惡心到了,目標后面緊跟著360的垃圾網址。這就是運行瀏覽器時自動打開某個網址的一種方式,極度鄙視這種流氓行為。)
使用C#創建快捷方式就是要創建一個lnk文件,并設置相關的屬性。.NET框架本身是沒有提供方法的,需要引入IWshRuntimeLibrary。在添加引用對話框中搜索Windows Script Host Object Model,選擇之后添加到Project的引用中。

詳細代碼如下:(文章來源:http://www.rzrgm.cn/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方法即可。
Author:Alex Leo
Email:conexpress@qq.com
Blog:http://conexpress.cnblogs.com/

浙公網安備 33010602011771號