Я работаю над приложением WPF, которое должно сохранять состояние окна (нормальное/минимизированное) - даже если система выключается или выгружается.Сохраните WindowState и восстановите его после перезагрузки/relogin
Событие WindowClosing используется для хранения состояния. Проблема в том, что shutdown/log off принудительно закрывает окно. Поэтому после перезагрузки состояние окна всегда минимизируется.
- Есть ли безопасный способ проверить, выключена ли система? (Я пробовал
Environment.HasShutdownStarted
, но id didnt работал). - Есть ли способ получить уведомление о изменениях состояния окна, отличных от события WindowClosing?
[Редактировать] Ответов на вопрос, помеченный как экземпляры, не удовлетворяющие:
SystemEvents.SessionEnding
не является правильным решением, так как msdn говорит: «Если вы используете SessionEnding в Форма Windows для обнаружения выхода из системы или перезагрузки, нет детерминированного способа решить, будет ли событие закрытия закрываться перед этим событием ».GetSystemMetrics(SM_SHUTTINGDOWN)
может работать (я его не тестировал), но для этого требуется PInvoke, и я предпочитаю управляемое решение.Итак, предложение d.moncada (с использованием события
Application.SessionEnding
) является лучшим решением для моей проблемы.
Да, и во время остановки машины, его увольняют с состоянием Минимизация как ОР более или менее указывает. – CodeCaster
Спасибо, Application.SessionEnding - это правильное событие, которое может использоваться для указания закрытия окон. – JanDotNet