2016-05-12 10 views
0

Я работаю над приложением 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) является лучшим решением для моей проблемы.

ответ

1

Есть ли безопасный способ проверить, если система завершает работу? (Я пробовал Environment.HasShutdownStarted, но id didnt работал).

Вы хотите знать, когда система (компьютер) выключается или приложение?

Если это приложение, вы можете использовать событие Window.Closing.

См. here.

Если это система, вы можете послушать событие Application.SessionEnding.

См. here.

Есть ли способ получить уведомление о изменениях состояния окна, кроме Событие WindowClosing?

Вы просмотрели событие StateChangedWindow?

Более подробную информацию см here

+0

Да, и во время остановки машины, его увольняют с состоянием Минимизация как ОР более или менее указывает. – CodeCaster

+1

Спасибо, Application.SessionEnding - это правильное событие, которое может использоваться для указания закрытия окон. – JanDotNet