C# – Tạo shortcut bằng Windows Script Host

CSharp_iconViệc tạo shortcut trong C# có vẻ khá phức tạp vì không được cung cấp sẵn trong các namespace cơ bản của .Net. Thay vào đó, bạn phải sử dụng một thành phần COM có tên là Windows Script Host Object bằng cách cho dự án của bạn tham chiếu đến tập tin wshom.ocx nằm trong thư mục system32 của Windows.

Để bắt đầu, trong Visual C# bạn hãy mở hộp thoại Add Reference…, chuyển sang thẻ COM, chọn dòng Windows Script Host và nhấn OK. Tiếp đến hãy thêm namespace này vào lớp chứa hàm tạo shortcut.

using IWshRuntimeLibrary;

Bây giờ chúng ta sẽ sử dụng các lớp trong namespace này để viết một hàm có chức năng tạo ra shortcut có các thuộc tính như: đường dẫn tập tin, mô tả, phím nóng, thư mục làm việc…

/// <summary>

/// Tạo shortcut

/// </summary>

/// <param name=”targetPath”>Tập tin bạn muốn tạo shortcut</param>

/// <param name=”shortcutFile”>Đường dẫn đến tập tin shortcut bao gồm cả phần đuôi (.lnk)</param>

/// <param name=”description”>Chuỗi mô tả shortcut</param>

/// <param name=”arguments”>Tham số dòng lệnh</param>

/// <param name=”hotKey”>Chuỗi phím tắt cho shortcut, ví dụ “Ctrl+Alt+A”</param>

/// <param name=”workingDirectory”>Tham số phần “Start in” của shortcut</param>

/// <param name=”iconLocation”>Đường dẫn đến icon cần gán cho shortcut</param>

public static void CreateShortcut(string targetPath, string shortcutFile, string description,

string arguments, string hotKey, string workingDirectory, string iconLocation)

{

// Kiểm tra 2 tham số cần thiết của hàm

if (String.IsNullOrEmpty(targetPath))

throw new ArgumentNullException(“targetPath”);

if (String.IsNullOrEmpty(shortcutFile))

throw new ArgumentNullException(“shortcutFile”);

// Tạo một thể hiện của lớp WshShellClass

WshShellClass wshShell = new WshShellClass();

// Tạo đối tượng shortcut

IWshRuntimeLibrary.IWshShortcut shortcut = (IWshRuntimeLibrary.IWshShortcut)wshShell.CreateShortcut(shortcutFile);

// Gán các thuộc tính cho shortcut

shortcut.TargetPath = targetPath;

shortcut.Description = description;

if (!String.IsNullOrEmpty(arguments))

shortcut.Arguments = arguments;

if (!String.IsNullOrEmpty(hotKey))

shortcut.Hotkey = hotKey;

if (!String.IsNullOrEmpty(workingDirectory))

shortcut.WorkingDirectory = workingDirectory;

if (!String.IsNullOrEmpty(iconLocation))

shortcut.IconLocation = iconLocation;

// Lưu shortcut

shortcut.Save();

}

Trong đoạn mã trên, một thể hiện của lớp WshShellClass sẽ gọi phương thức  CreateShortcut(string PathLink), tham số PathLink là chuỗi chứa đường dẫn tập tin shortcut cần tạo. Phương thức này sau khi thực thi sẽ trả về một đối tượng kiểu object, ta cần ép kiểu nó sang IWshShortcut sau đó gán các thuộc tính cho shortcut vừa tạo như đoạn mã trên.

shortcut.TargetPath = targetPath;

shortcut.Description = description;

if (!String.IsNullOrEmpty(arguments))

shortcut.Arguments = arguments;

if (!String.IsNullOrEmpty(hotKey))

shortcut.Hotkey = hotKey;

if (!String.IsNullOrEmpty(workingDirectory))

shortcut.WorkingDirectory = workingDirectory;

if (!String.IsNullOrEmpty(iconLocation))

shortcut.IconLocation = iconLocation;

Nếu thuộc tính iconLocation không được gán cho shortcut thì biểu tượng của shortcut sẽ là biểu tượng của tập tin nguồn.

Ta đã hoàn thành hàm để tạo ra một shortcut với các thuộc tính căn bản. Để sử dụng nó trong chương trình, bạn có thể làm như ví dụ sau. Nhớ rằng hàm của chúng ta có ném ra một vài ngoại lệ nên hãy cẩn thận dùng khối try catch để bao lại. Ở ví dụ này ta sẽ tạo một shortcut ngoài Desktop có tên là Foxit Reader:

try

{

CreateShortcut(@”C:\Foxit Reader.exe”, Environment.GetFolderPath(Environment.SpecialFolder.Desktop

) + “\\Foxit Reader.lnk”,

“Foxit Reader”, null, “Ctrl+Shift+F”, @”C:\”,”D:\\favorite.ico”);

}

catch (Exception ex)

{

MessageBox.Show(ex.Message);

}

Bạn có thể dùng hàm này để tạo shortcut cho ứng dụng của mình trên Desktop hoặc Startmenu.

Chúc thành công!

http://yinyang-it.tk

8/6/2009

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s