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 будет самой первой.

0 ответов

Другие вопросы по тегам