創建快捷方式對於絕大多數 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 ~ ~ ~