我正在尋找一種方法,可以將命令行參數解析到我的WPF應用程序中,只需讀取用戶傳遞的參數的值即可。WPF命令行參數,一個聰明的方法?
舉個例子
application.exe /setTime 5
有沒有辦法,我有一些代碼,我只能說:
MessageBox.Show(arg("setTime"));
將輸出5
工作液
How to create smart WPF Command Line Arguments
我正在尋找一種方法,可以將命令行參數解析到我的WPF應用程序中,只需讀取用戶傳遞的參數的值即可。WPF命令行參數,一個聰明的方法?
舉個例子
application.exe /setTime 5
有沒有辦法,我有一些代碼,我只能說:
MessageBox.Show(arg("setTime"));
將輸出5
工作液
How to create smart WPF Command Line Arguments
當您解析命令行時,將參數/值對以參數作爲鍵放入Dictionary
。然後你arg("SetTime")
將變爲:
MessageBox.Show(dictionary["SetTime"]);
(顯然你不希望實際的字典是公開的。)
要獲得在首位的參數,你可以使用:
string[] args = Environment.GetCommandLineArgs();
這將返回所有參數,因此您將需要以兩個步驟解析數組(第一次檢查長度爲2 + 1的倍數後):
該陣列的第一個元素是執行程序的名稱 - MSDN Page - 所以你的循環需要從一個開始:
for (int index = 1; index < args.Length; index += 2)
{
dictionary.Add(args[index], args[index+1]);
}
此循環中的兩個步驟可以定義每個參數是一對值:所述標識符和實際價值本身,例如
my.exe -arg1 value1 -arg2 value2
然後,你可以簡單地看,如果被看到指定的參數,如果該鍵-arg1
在字典中,然後讀取它的值:
string value;
if (dictionary.TryGetValue(arg, out value))
{
// Do what ever with the value
}
這意味着你可以有參數以任意順序並省略任何你不想指定的參數。
工作,很簡單比我想象的要多。非常感謝 – 2012-02-18 17:53:38
如果參數數量不均勻,該怎麼辦?爲了避免使用異常(int index = 1; index
@JPollack - 如果參數數量不平衡,則缺少某些參數,因此您必須報告錯誤。 – ChrisF 2013-01-09 22:56:54
相關[WPF命令行](http://stackoverflow.com/questions/426421/wpf-command-line) – Vache 2012-02-18 17:28:28
你有沒有試過看codeplex?命令行解析有很多不同的實現。 – 2012-02-18 17:30:28
有很多庫可以處理命令行參數,請參閱:http://stackoverflow.com/questions/491595/best-way-to-parse-command-line-arguments-in-c – 2012-02-19 01:51:37