標籤:
C#_WinForm接收命令列參數 2014-08-03 10:17 534人閱讀 評論(0) 收藏 舉報
首先,我要仔細的聲明下,本文講的是接受命令列參數,讓程式啟動。而不是啟動那個黑黑的框。。。我要實現的效果和它麼有關係
網上那些千篇一律,只管Ctrl+C,Ctrl+V,採集來的文章,本人已經深受其害,浪費了不少時間!BS~~
先看下這篇文章:Winform程式接收命令列參數。一看標題,恩…和我的想法一樣,不過一看內容,大為失望。不過呢,這裡既然出現了2個API函數,先測試下,收藏著。
/// <summary>/// 啟動控制台/// </summary>/// <returns></returns>[DllImport("kernel32.dll")]public static extern bool AllocConsole();/// <summary>/// 釋放(關閉)控制台/// </summary>/// <returns></returns>[DllImport("kernel32.dll")]public static extern bool FreeConsole();
在WinForm中調用黑框(控制台),就可以用此來實現。具體的使用…自己實踐吧…
現在說正題,說明下我要實現的功能:
舉個例子,在cmd.exe下,我們輸入shutdown,這個命令可以用來重啟系統,關閉系統,等等。它有一系列的參數可選:
我們可以在C:\Windows\System32\下找到shutdown.exe這個Exe可執行檔。這個程式接受命令列參數,當參數符合一個內建參數時,執行某個操作。
我們就是要實現這種功能!這樣的程式可以在任何一個項目中使用,通過System.Diagnostics.Process.Start("你的程式.exe 參數1")。
一般情況下,每個項目都有一個Main函數,它是整個程式的進入點,那麼參數也肯定在這裡被傳遞!
預設的Main函數:
/// <summary>/// 應用程式的主進入點。/// </summary>[STAThread]static void Main(){ Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); Application.Run(new Form1());}
我們只需改成這樣:
/// <summary>/// 應用程式的主進入點。/// </summary>[STAThread]static void Main(string[] args){ Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); if (args.Length == 0) Application.Run(new Form1()); else Application.Run(new Form1(args));}
Form1表單的構造:
string[] args=null;public Form1(){ InitializeComponent();}public Form1(string[] args){ InitializeComponent(); this.args = args;}
真的是很簡單很簡單的幾行代碼。。。我們有了args參數,剩下的代碼。。。看你的需求咯
C#_WinForm接收命令列參數