Я пишу приложение запуска WPF для нескольких небольших проектов Unity3D и Unreal, которое считывает код выхода из приложения-концентратора (также Unity) для запуска других проектов в зависимости от полученного кода выхода.
К сожалению, некоторые изв этих маленьких проектах не реализован «чистый выход», и их необходимо уничтожить с помощью ALT+F4
, что, в свою очередь, по какой-то причине не зарегистрировано моим приложением для запуска.
Часть кода выхода неактуально для проблемных проектов. Я использую только коды выхода для приложения-концентратора.Запуск их из приложения-концентратора работает просто отлично, и если у них есть какие-то средства выхода, мой лаунчер работает как чудо.
Я использую WaitForExit
без тайм-аута, потому что приложения работают бесконечно, если пользователь не выходит.
private static Process currentRunningProcess;
public static void StartApp(string applicationPath)
{
if (currentRunningProcess != null) return;
currentRunningProcess = new Process
{
StartInfo = new ProcessStartInfo(applicationPath)
};
currentRunningProcess.Start();
}
//this function is used both for the hub app and for the little projects to
//avoid having two functions that basically do the same
//the exit code is only used for the hub app and ignored for anything else
public static int GetExitCode()
{
currentRunningProcess.WaitForExit();
var exitCode = currentRunningProcess.ExitCode;
currentRunningProcess = null;
return exitCode;
}
Я что-то упустил или это должно работать таким образом?Если второй случай верен, как я могу улучшить мою реализацию, чтобы также зарегистрировать ALT+F4
ed приложений?
(Реализация чистого выхода для небольших проектов, к сожалению, невозможна, так как некоторые из них являются коммитами от третьегосторонние провайдеры, где у меня нет доступного исходного кода)