2013-03-16 1 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

+0

작동하지 않는 것이 도움이되지 않습니다. 더 말해. 그것이 어떻게 실패했는지 말해주십시오. 나머지 코드를 보여주십시오. –

+0

글쎄, 프로세스가 끝나기 때문에 테스트를해야 할 -k 인수를 얻지 못하기 때문에 프로세스가 종료됩니다. – user1422473

답변

1

인수 매개 변수에 verbatim string을 사용해보십시오. 이와 같이 :

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

여전히 동일한 문제 – user1422473

+0

@ user1422473 더 많은 C# 코드를 게시하십시오 (질문 편집). 우리는 프로세스를 시작하는 라인을 볼 필요가 있습니다. 어쩌면 문제가있을 수 있습니다. – Anthony

+1

축 어적 문자열을 사용할 때 의미를 변경하는 문자 또는 이스케이프 시퀀스가 ​​없으므로이 변경만으로도 효과가 있음을 알게 될 것입니다. –

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 + "\"");