2011-04-20 4 views
3

시나리오 : 나는 C#으로 만든 EXE를 부르는 MFC 코드 한 (그것이 윈도우 폼 응용 프로그램)어떻게 EXE에서 반환 값을 얻을하고 다시 시작하는

필요 : 나는 EXE가 필요 닫을 때 값을 반환하고, 반환 값에 기초하여 같은 EXE 의지를 다시 시작 것

int result = RunExe("exename", arguments) 
    if(result == 1) 
    { 
    result = RunExe("exename", arguments) 
    } 

내가 루프의 경우 조건을 넣어해야합니까 psudocode?

plz 나에게 몇 가지 제안을 해주세요. 1.How는 반환 값을 수집하는 방법 EXE 2에서 값을 반환 당신이 process.ExitCode를 사용하고 exitvalue을 제어하는 ​​새로운 EXE를 만들 수 EXE

답변

5

귀하의 C#을 EXE는 다음과 같이 int 값을 반환 할 수 있습니다

[STAThread] 
public static int Main() { 
    return 5; 
} 

귀하의 다른 응용 프로그램은 여기에서 설명 한 다른 이들처럼 반환 값을 처리 할 수있다. 이 정확히 내가 원하는 방식으로 작동

var proc = Process.Start("mycsharwinformapp.exe"): 
proc.WaitForExit(); 

//If the code is 5 restart app! 
if(proc.ExitCode==5) Process.Start("mycsharwinformapp.exe"): 
+0

감사합니다. – sshah

0

를 다시 시작하고 원래의 EXE를 시작하는 방법 (3) 필요하다면 디스크의 파일에 정보를 저장합니다. 정수 이상의 경우 상위 프로세스 (작성한 새 EXE)에서 처리 할 수 ​​있습니다.

0

OD 쓴 것처럼, Process.ExitCode는 과정까지 기다려야하는 ...

... 시작된 프로세스를 나타내는 프로세스 개체를 반환합니다 당신이 Process.Start(string_path_to_exe,string_args)를 사용할 수있는 프로세스를 시작하는 찾고있는 값입니다

는 다음 방법은 트릭을해야 Process Class @ MSDN

0

참조 객체의 WaitForExit() 방법을 사용 종료;

private static int RunProcess(string processName, string arguments) 
{ 
    Process process = new Process(); 
    process.StartInfo.FileName = processName; 
    process.StartInfo.Arguments = arguments; 
    process.Start(); 
    process.WaitForExit(); 
    return process.ExitCode; 
} 

다음과 같이 호출하십시오.

int returnCode; 
do 
{ 
    returnCode = RunProcess("...", "..."); 
} 
while (returnCode == 1); 
관련 문제