創建快捷方式對於絕大多數 Windows 用戶來說都是小菜一碟了,然而,這項工作卻為程序員帶來不少麻煩。.NET 沒有提供簡便直接的創建快捷方式的方法,那麼在 .NET 中我們如何為應用程序創建快捷方式呢?
1. 快捷方式文件
快捷方式實質上是一個擴展名為 .LNK 的文件。右擊一個快捷方式文件並選擇屬性,跳到快捷方式選項卡,如圖1所示:
你可以看到一個快捷方式包含如下數據:
·快捷方式的名字
·快捷方式所指向的目標所在的位置
·快捷方式所指向的目標的工作目錄
·激活該快捷方式的熱鍵
·快捷方式所指向的目標運行時的窗口風格(普通、最大化和最小化)
·該快捷方式的描述性文字
·快捷方式的圖標所在的位置
2. 使用 WSH 創建快捷方式
2.1 添加 WSH 的引用
這裡我使用 Visual C# 2005 Express Edition Beta 2 來開發的,添加引用的方法非常簡單,右擊你的項目並選擇添加引用,選擇 COM 選項卡並選擇 Windows Script Host Object Model,如圖2所示:
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 ~ ~ ~