C# 建立捷徑

來源:互聯網
上載者:User

標籤:

用WSH直接建立捷徑: 
1.首先要添加引用. 
添加引用的方法非常簡單,右擊你的項目並選擇添加引用, 
選擇 COM 選項卡並選擇 Windows Script Host Object Model 
2.引用命名空間 
using System.Runtime.InteropServices;//互動服務 using IWshRuntimeLibrary; 
3.建立捷徑(注釋中有詳細說明) 
//執行個體化WshShell對象 WshShell shell = new WshShell(); //通過該對象的 CreateShortcut 方法來建立 IWshShortcut 介面的執行個體對象 IWshShortcut shortcut = (IWshShortcut)shell.CreateShortcut(     Environment.GetFolderPath(Environment.SpecialFolder.Desktop) + "//ShortCut.lnk"); //設定捷徑的目標所在的位置(來源程式完整路徑) shortcut.TargetPath = System.Reflection.Assembly.GetExecutingAssembly().Location; //應用程式的工作目錄 //當使用者沒有指定一個具體的目錄時,捷徑的目標應用程式將使用該屬性所指定的目錄來裝載或儲存檔案。 shortcut.WorkingDirectory = System.Environment.CurrentDirectory; //目標應用程式視窗類別型(1.Normal window普通視窗,3.Maximized已最大化的視窗,7.Minimized最小化) shortcut.WindowStyle = 1; //捷徑的描述 shortcut.Description = "ChinaDforce YanMang"; //可以自訂捷徑表徵圖.(如果不設定,則將預設源檔案表徵圖.) //shortcut.IconLocation = System.Environment.SystemDirectory + "\\" + "shell32.dll, 165"; //設定應用程式的啟動參數(如果應用程式支援的話) //shortcut.Arguments = "/myword /d4s"; //設定快速鍵(如果有必要的話.) //shortcut.Hotkey = "CTRL+ALT+D"; //儲存捷徑 shortcut.Save(); 

缺點: 

用這種方法寫的程式,必須有Interop.IWshRuntimeLibrary.dll跟著, 
才能正確執行.對於建立"單檔案程式"的人來講,麻煩了吧. 


通過建立VBS,並執行,建立方式: 
1.首先看一下VBS建立捷徑的代碼: 
‘VBS執行個體 set WshShell = WScript.CreateObject("WScript.Shell") strDesktop = WshShell.SpecialFolders("Desktop") ‘獲得案頭目錄 set oShellLink = WshShell.CreateShortcut(strDesktop & "\D4S.lnk") ‘捷徑存放目錄及名稱 oShellLink.TargetPath = "X:\Program Files\XXX.exe"   ‘指向的可執行檔 oShellLink.WindowStyle = 1 ‘運行方式(表單開啟的方式) oShellLink.Hotkey = "CTRL+SHIFT+F"    ‘快速鍵 oShellLink.IconLocation = "X:\Program Files\XXX.exe, 0" ‘表徵圖(同樣可不指定) oShellLink.Description = "ChinaDforce YanMang"    ‘備忘資訊 oShellLink.WorkingDirectory = "X:\Program Files\"   ‘起始目錄 oShellLink.Save ‘儲存捷徑 

2.那我們如何在C#中使用VBS呢? 

方法我想應該有很多吧! 
在這裡介紹一種"最笨"但最直接的方法. 
思路如下: 
>>> 產生VBS全部代碼文本; 
>>> 寫入臨時檔案"temp.vbs"; 
>>> 用Process開啟這個檔案執行. 
3.下面是C#中實現的關鍵代碼: 
//產生VBS代碼 string vbs = this.CreateVBS(); //以檔案形式寫入臨時檔案夾 this.WriteToTemp(vbs); //調用Process執行 this.RunProcess(); //產生VBS代碼 string vbs = this.CreateVBS(); //以檔案形式寫入臨時檔案夾 this.WriteToTemp(vbs); //調用Process執行 this.RunProcess(); /// /// 建立VBS代碼 /// /// private string CreateVBS() {     string vbs = string.Empty;     vbs += ("set WshShell = WScript.CreateObject(\"WScript.Shell\")\r\n");     vbs += ("strDesktop = WshShell.SpecialFolders(\"Desktop\")\r\n");     vbs += ("set oShellLink = WshShell.CreateShortcut(strDesktop & \"\\D4S.lnk\")\r\n");     vbs += ("oShellLink.TargetPath = \"" + System.Reflection.Assembly.GetExecutingAssembly().Location + "\"\r\n");     vbs += ("oShellLink.WindowStyle = 1\r\n");     vbs += ("oShellLink.Description = \"ChinaDforce YanMang\"\r\n");     vbs += ("oShellLink.WorkingDirectory = \"" + System.Environment.CurrentDirectory + "\"\r\n");     vbs += ("oShellLink.Save");     return vbs; } /// /// 寫入臨時檔案 /// /// private void WriteToTemp(string vbs) {     if (!string.IsNullOrEmpty(vbs))     {         //臨時檔案         string tempFile = Environment.GetFolderPath(Environment.SpecialFolder.Templates) + "[url=file://\\temp.vbs]\\temp.vbs[/url]";         //寫入檔案         FileStream fs = new FileStream(tempFile, FileMode.Create, FileAccess.Write);         try         {             //這裡必須用UnicodeEncoding. 因為用UTF-8或ASCII會造成VBS亂碼             System.Text.UnicodeEncoding uni = new UnicodeEncoding();             byte[] b = uni.GetBytes(vbs);             fs.Write(b, 0, b.Length);             fs.Flush();             fs.Close();         }         catch (Exception ex)         {             MessageBox.Show(ex.Message, "寫入臨時檔案時出現錯誤", MessageBoxButtons.OK, MessageBoxIcon.Error);         }         finally         {             //釋放資源             fs.Dispose();         }     } } /// /// 執行VBS中的代碼 /// private void RunProcess() {     string tempFile = Environment.GetFolderPath(Environment.SpecialFolder.Templates) + "\\temp.vbs";     if (File.Exists(tempFile))     {         //執行VBS         Process.Start(tempFile);     } } private void btn退出_Click(object sender, EventArgs e) {     Application.Exit();     //清除臨時檔案     File.Delete(Environment.GetFolderPath(Environment.SpecialFolder.Templates) + "\\temp.vbs"); } 

 

強調一點: 

在寫入VBS檔案時,一定要用UnicodeEncoding. 
因為UTF-8和ASCII碼,都會導致VBS產生捷徑的時候, 
產生亂碼,而導致捷徑錯誤. 
本人原來使用UTF8Encoding的時候,不放在包含中文的路徑中還可以,但一出現中文就掛了! 
困擾我好半天,才發現的這個細節.

源:http://www.cnblogs.com/linmilove/archive/2009/06/10/1500989.html

C# 建立捷徑

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.