как получить возвращаемое значение из exe и перезапустить его - PullRequest
4 голосов
/ 20 апреля 2011

Сценарий: У меня есть код MFC, который вызывает exe-файл, созданный в C # (это приложение Windows Form)

Необходимость: Мне нужно, чтобы exe возвращал значение при закрытии, и на основе возвращаемого значения тот же exe будет запущен снова

psudocode

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

Должен ли я поместить условие if в цикл?

Пожалуйста, дайте мне предложение. 1. Как вернуть значение из exe 2. Как собрать возвращаемое значение 3. Как перезапустить exe

Ответы [ 4 ]

7 голосов
/ 20 апреля 2011

Ваш 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 голосов
/ 20 апреля 2011

, как писал O.D, Process.ExitCode - это значение, которое вы ищете ...

для запуска процесса вы можете использовать Process.Start(string_path_to_exe,string_args), который будет возвращать объект Process, представляющий запущенный процесс ... для ожидания завершения процесса используйте метод WaitForExit() этого объекта

см. Класс процесса @ MSDN

0 голосов
/ 20 апреля 2011

Следующий метод должен сработать;

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);
0 голосов
/ 20 апреля 2011

вы можете использовать process.ExitCode и создать новый EXE-файл, который контролирует значение выхода и при необходимости запускает оригинальный EXE-файл, или вы сохраняете информацию в файле на диске, если его число больше целоготак что вы можете обработать его из родительского процесса (нового EXE-файла, который вы создаете).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...