Windows 7 - запуск процесса на переднем плане
Моя проблема происходит на Windows 7.
Фон:
У меня есть два приложения:
а) MainApp - программное обеспечение, которое всегда должно работать на переднем плане, развернуто (без панели задач)
б) Watchdog - программное обеспечение, которое отслеживает MainApp, если оно работает должным образом, и запускает новый экземпляр MainApp, если он закрыт.
Проблема:
Все работает хорошо Но я заметил, что иногда в Windows 7 MainApp запускается свернутой - на панели задач отображается значок, WindowState "развернут" (проверено в журналах), но форма не отображается, пока я не восстановлю ее с панели задач. Проблема не возникает в Windows 10 (другие не проверены).
Воспроизведите шаги, которые мне удалось воспроизвести эту проблему:
а) Запустите Watchdog + MainApp
б) Нажмите Win+D (сверните все окна)
в) Закрыть MainApp (с помощью мыши из панели задач)
г) Watchdog перезапускает MainApp свернутым <= ПРОБЛЕМА!!
Покажи мне код
Watchdog запускает MainApp, просто выполнив:
var info = new ProcessStartInfo();
info.FileName = clientExePath;
info.UseShellExecute = false;
Process.Start(info);
Ожидаемое поведение
MainApp запускается перед всеми другими видимыми окнами.
Кто-нибудь знает, как справиться с этой проблемой?
РЕДАКТИРОВАТЬ 1
Я узнал, что вызов метода extern из Shell32.dll
void ToggleDesktop();
восстанавливает все окна. Но я не знаю, как проверить, все ли окна свернуты (чтобы запустить этот метод). Кроме того, он восстанавливает все открытые окна, поэтому не уверен, что форма MainApp будет самой первой.