2011-07-17 30 views
0

我有執行使用的Process.Start如何用C#啓動外部過程中,採用一個cmd窗口

Process p = new Process(); 
p.StartInfo.WorkingDirectory = "dump"; 
p.StartInfo.FileName = "test.exe"; 
p.StartInfo.Arguments = s; 
p.Start(); 

外部控制檯應用程序的麻煩當該P生成執行時,外部應用程序崩潰,雖然參數如果我在命令行窗口中複製完全相同的參數,它運行良好。

所以我的問題,而不是如何創建一個命令窗口的新實例,然後添加命令test.exe + s運行?

那麼有效,我發動cmd,然後加入到它

+0

什麼? – wulfgarpro

回答

2

試試這個:

ProcessStartInfo processToRunInfo = new ProcessStartInfo();  
processToRunInfo.Arguments = "Arguments"); 
processToRunInfo.CreateNoWindow = true; 
processToRunInfo.WorkingDirectory = "C:\\yourDir\\"; 
processToRunInfo.FileName = "test.exe"; 
//processToRunInfo.CreateNoWindow = true; 
//processToRunInfo.WindowStyle = ProcessWindowStyle.Hidden; 
Process process = new Process(); 
process.StartInfo = processToRunInfo; 
process.Start(); 
3

我的論點。如果你想運行CMD通過test.exe prm1 prm2,使用cmd.exe /c test.exe prm1 prm2。雖然我不太明白這與事故有什麼關係。聽起來像你的問題是test.exe - 找出是什麼導致它崩潰,這將幫助你修復你的C#代碼,這樣你就不需要cmd

我會檢查的地方之一是工作目錄。當你將它設置爲「轉儲」時,你確定當前目錄是你期望的嗎?嘗試先使用完整路徑。有可能test.exe碰巧在系統路徑中,因此它被執行,但其工作目錄不是它所期望的,並且這導致它崩潰。

0

MSDN看看。

您需要創建StartInfo的類和用戶啓動(實例),如

ProcessStartInfo startInfo = new ProcessStartInfo("IExplore.exe"); 
startInfo.WindowStyle = ProcessWindowStyle.Minimized; 
Process.Start(startInfo); 
startInfo.Arguments = "www.example.com"; 
Process.Start(startInfo); 

試試吧!

重寫你的代碼看起來是這樣的:在EVENTVWR

ProcessStartInfo startInfo = new ProcessStartInfo("test.exe"); 
startInfo.WindowStyle = ProcessWindowStyle.Minimized; 
startInfo.WorkingDirectory = "dump"; 
startInfo.Arguments = "s"; 
Process.Start(startInfo); 
1
Process p = new Process(); 
p.StartInfo.WorkingDirectory = "/full/path/to/dump"; 
p.StartInfo.FileName = "/full/path/to/test.exe"; 
p.StartInfo.Arguments = s; // will call 'text.exe s' 
p.Start(); 
相關問題