C#_WinForm接收命令行參數


C#_WinForm接收命令行參數

首先,我要仔細的聲明下,本文講的是接受命令行參數,讓程序啟動。而不是啟動那個黑黑的框。。。我要實現的效果和它么有關系

網上那些千篇一律,只管Ctrl+C,Ctrl+V,采集來的文章,本人已經深受其害,浪費了不少時間!BS~~

image

先看下這篇文章: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,這個命令可以用來重啟系統,關閉系統,等等。它有一系列的參數可選:

image

我們可以在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參數,剩下的代碼。。。看你的需求咯


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM