在 .NET 中建立捷徑 [C#]
Creating Shortcuts in .NET [C#]
Written by Allen Lee
建立捷徑對於絕大多數 Windows 使用者來說都是小菜一碟了,然而,這項工作卻為程式員帶來不少麻煩。.NET 沒有提供簡便直接的建立捷徑的方法,那麼在 .NET 中我們如何為應用程式建立捷徑呢?
1. 捷徑檔案
捷徑實質上是一個副檔名為 .LNK 的檔案。右擊一個捷徑檔案並選擇屬性,跳到捷徑選項卡,2所示:
你可以看到一個捷徑包含如下資料:
- 捷徑的名字
- 捷徑所指向的目標所在的位置
- 捷徑所指向的目標的工作目錄
- 啟用該捷徑的熱鍵
- 捷徑所指向的目標運行時的視窗風格(普通、最大化和最小化)
- 該捷徑的描述性文字
- 捷徑的表徵圖所在的位置
2. 使用 WSH 建立捷徑
2.1 添加 WSH 的引用
這裡我使用 Visual C# 2005 Express Edition Beta 2 來開發的,添加引用的方法非常簡單,右擊你的項目並選擇添加引用,選擇 COM 選項卡並選擇 Windows Script Host Object Model,3所示:
2.2 建立你的捷徑
建立一個捷徑的完整代碼如下:
// Code #01
using System;
using IWshRuntimeLibrary;
class Program
{
static void Main(string[] args)
{
WshShell shell = new WshShell();
IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(
Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory) +
"\\" + "Allen's Application.lnk"
);
shortcut.TargetPath = System.Reflection.Assembly.GetExecutingAssembly().Location;
shortcut.WorkingDirectory = System.Environment.CurrentDirectory;
shortcut.WindowStyle = 1;
shortcut.Description = "Launch Allen's Application";
shortcut.IconLocation = System.Environment.SystemDirectory + "\\" + "shell32.dll, 165";
shortcut.Save();
}
}
首先,我們建立一個 WshShell 的執行個體對象,接著通過該對象的 CreateShortcut 方法來建立 IWshShortcut 介面的執行個體對象,傳遞給 CreateShortcut 方法的參數是將要建立的捷徑的完整路徑(包括該捷徑的名字)。接下來,我們就要設定 IWshShortcut 執行個體對象的相關屬性值了。
2.3 設定捷徑的屬性
2.3.1 TargetPath
該屬性僅用於設定或者讀取捷徑的目標所在的位置。Code #01 中,將要建立的捷徑指向本應用程式。
2.3.2 WorkingDirectory
該屬性指定應用程式的工作目錄,當使用者沒有指定一個具體的目錄時,捷徑的目標應用程式將使用該屬性所指定的目錄來裝載或儲存檔案。
2.3.3 WindowStyle
該屬性指定捷徑的目標應用程式的視窗為普通(原始)狀態、最小化或者最大化。對比圖1中 Run 下拉式功能表的項,該屬性的值及其意義如下:
| Value |
Meaning |
| 1 |
Normal window |
| 3 |
Maximized |
| 7 |
Minimized |
2.3.4 Description
該屬性設定用於設定或者讀取捷徑的附加說明。
2.3.5 IconLocation
該屬性用於指定捷徑的圖表的所在位置,它的值包含一個完整的路徑和一個索引值。Code #01 中,捷徑的表徵圖被設定為系統檔案夾中的 Shell32.DLL 檔案所包含的第165個表徵圖。
2.4 產生捷徑
CreateShortcut 僅僅建立一個 IWshShortcut 的執行個體對象,它不會為你產生任何捷徑,當一切就緒後,你必須調用 IWshShortcut.Save 方法才能產生捷徑檔案。
3. 活用捷徑簡化操作
想象一下你的應用程式支援命令列參數組合運行,例如:
App /out:output.txt /sortby:date /desc
而你又希望只需要輕輕按下 CTRL+ALT+F11 就可以直接啟動這項功能,這時你就需要用到 IWshShortcut 的 Arguments 和 Hotkey 兩個屬性了:
// Code #02
shortcut.Arguments = "/out:output.txt /sortby:date /desc";
shortcut.Hotkey = "CTRL+ALT+F11";
注意:Hotkey 屬性的值裡面不能包含空格。
你可以在應用程式裡面像平常那樣處理命令列參數:
// Code #03
class Program
{
static void Main(string[] args)
{
foreach (string arg in args)
{
Console.WriteLine(arg);
}
}
}
// Output:
//
// /out:output.txt
// /sortby:date
// /desc
現在,你把這個捷徑放到案頭,每當你需要啟動並執行時候,輕輕的按下 CTRL+ALT+F11 就行了,Cool ~ ~ ~
Appendix A
Mattias Sjogren 建立了一個名叫 ShellShortcut 的封裝類(wrapper class),你可以在你的項目中直接使用它。有興趣的話,你也可以對其進行一番研究。