2013-03-16 33 views
0

我有一個過程,它需要一些參數,我希望它從C#開始,我已經嘗試了相同的參數在快捷方式和它的作品,另一方面,在C#它沒有,所以這裏是參數。該參數的格式是正確的,但我在-kC#ProcessStartInfo參數

ProcessStartInfo prf = new ProcessStartInfo("C:\\" + "argstest.exe");  
prf.UseShellExecute =true; 
prf.Arguments = "-l http://test.tes1:[email protected]:3333/ -k testing TYPE=0 USER=1 COUNT=10"; 
Process.Start(prf); 

過程開始得到一個錯誤的參數錯誤,但會馬上閉合,因爲它應該測試的-k參數犯規被髮送到程序。 我曾嘗試添加「」前-l,但同樣的,也試過空間@「-l ......」

+1

哪裏是你的非工作的C#代碼? – Oded 2013-03-16 20:38:44

+0

它不起作用是沒有用的。請告訴我們更多。告訴我們它是如何失敗的。顯示其餘的代碼。 – 2013-03-16 20:38:55

+0

那麼,進程退出,因爲他沒有得到應該測試的-k參數。 – user1422473 2013-03-16 20:39:34

回答

1

嘗試在參數參數使用verbatim string。像這樣:

prf.Arguments = @"-l http://test.tes1:[email protected]:3333/ -k testing TYPE=0 USER=1 COUNT=10"; 
+0

仍然是同樣的問題 – user1422473 2013-03-16 21:25:25

+0

@ user1422473請發佈一些更多的C#代碼(編輯問題)。我們需要看到線,你開始一個過程。也許存在一個問題。 – Anthony 2013-03-16 21:28:55

+1

使用逐字字符串時,沒有改變含義的字符或轉義序列,因此僅憑這種改變會使其起作用就會令人驚訝。 – 2013-03-17 11:25:23

1

我測試了你的代碼,沒有發現任何問題。也許你會發現在跟蹤你的問題這是有用的,我這樣做,你可以這樣做:

控制檯,您正試圖運行應用程序,我這樣做:

static void Main(string[] args) 
{ 
    foreach (var arg in args) 
    { 
     Console.WriteLine(arg); 
    } 
    Console.ReadLine(); 
} 

從另一個控制檯應用程序,只是這樣的:

static void Main(string[] args) 
     { 
      ProcessStartInfo prf = new ProcessStartInfo("ConsoleApplication1.exe"); 
      prf.UseShellExecute = true; 
      prf.Arguments = "-l http://test.tes1:[email protected]:3333/ -k testing TYPE=0 USER=1 COUNT=10"; 
      Process.Start(prf); 
     } 

輸出:

-1 
http://test.tes1:[email protected]:3333/ 
-k 
testing 
TYPE=0 
USER=1 
COUNT=10 

這是什麼使我相信問題不在於Process.Start()方面,而在於您的其他應用程序解析參數的方式。至於爲什麼快捷方式起作用,而這不起作用,也許你應該複製/粘貼你正在使用的快捷方式,並不能確定那個快捷方式。

0

我發現的方式最適合,這是與周圍的命令轉義報價設置它,就像這樣:

string command = "ping -c 4 google.com"; 

ProcessStartInfo procStartInfo = new ProcessStartInfo("/bin/bash", "-c " + "\"" + command + "\"");