2012-05-21 133 views
1

有沒有辦法將字符串參數傳遞給從我自己的進程中產生的進程。如何將參數傳遞給進程

我有我的主要應用:

Process.Start(Path.Combine(Application.StartupPath, "wow.exe"); 

wow.exe是另一個應用程序我創建。我需要傳遞參數給這個exe(一個字符串)。我怎樣才能做到這一點?

我的嘗試:

ProcessStartInfo i = new //........ 
i.Argument = "cool string"; 
i. FileName = Path.Combine(Application.StartupPath, "wow.exe"); 
Process.Start(i); 

,並在主wow應用我寫道:

static void Main() 
{ 
    //print Process.GetCurrentProcess().StartInfo.Argument; 
} 

但我從來沒有得到我的字符串中有第二個應用程序的主。 Here is a question,詢問why,但沒有how to solve it ..

編輯:Environment.GetCommandLineArgs()[1],它必須是。儘管如此,它的工作。接受@巴厘島的答案,他首先與這個答案齊聚一堂。感謝所有

回答

2

要獲得傳遞的參數,您可以在Main中使用string[] args,也可以使用Environment.GetCommandLineArgs

例子:

Console.WriteLine(args[0]); 

Console.WriteLine(Environment.GetCommandLineArgs[0]); 
1

在你wow.exe的Program.cs

static void Main() 
{ 
    //Three Lines of code 
} 

改變它

static void Main(string[] args) 
{ 
    //Three Lines of code 
} 

string[] args.現在將包含您的參數傳遞給您的exe文件。

或者你可以使用

string[] arguments = Environment.GetCommandLineArgs(); 

你的論點是由空間" "打破。

+0

ARGS []傳遞的參數?如何獲得? – nawfal

+0

我在Main()中看不到任何類似的東西。 – nawfal

+0

@nawfal:現在檢查 –

1

下面是一個例子,說明你可以得到參數傳遞給你的EXE:

static void Main() 
{ 
    string[] args = Environment.GetCommandLineArgs(); 

    string firstArgument = args[0]; 
    string secondArgument = args[1]; 
} 

或更改你的主要方法的位:

static void Main(string []args) 
{} 
2

你可能需要一個

static void Main(string[] args) 
{ 
} 

其中args包含您在

+0

我試過這個,但是我仍然得到了'Process'的空字符串。GetCurrentProcess()。StartInfo.Argument;'主要 – nawfal

+0

你不需要那個。嘗試'Console.WriteLine(args [0] .ToString())' – MichelZ