Рейтинг:
6
Jochen Arndt
Видеть Сообщение WM_QUERYENDSESSION (Windows)[^]. Дополнительная информация передается в lParam
член (LParam
для System.Windows.Forms.Message
):
Цитата:
параметр lparam
Этот параметр может иметь одно или несколько следующих значений. Если этот параметр равен 0, то система завершает работу или перезапускается (определить, какое событие происходит, невозможно).
Таким образом, вы не можете обнаружить перезапуск.
Stroylong
Есть ли какое-либо решение, чтобы узнать, выключена ли система или перезапущена? Спасибо!
Jochen Arndt
Я не знаю решения и думаю, что его нет.
Stroylong
Спасибо вам за ваш ответ!
Jochen Arndt
Добро пожаловать.
Все, что я нашел с помощью быстрого поиска, это:
http://stackoverflow.com/questions/981306/how-to-detect-whether-windows-is-shutting-down-or-restarting
Так что вы можете прочитать журнал событий. Но это довольно сложная задача, требующая решения особых случаев.
Рейтинг:
12
Stroylong
Есть ли какой-нибудь способ узнать, выключена ли система или перезапущена? Спасибо!
CHill60
Нет, нет. В документации это совершенно ясно сказано
Stroylong
Есть ли какое-то другое решение? В дополнение к такому решению!
CHill60
Я обновил свое решение
Stroylong
Потому что мне нужно сообщить микроконтроллеру о запуске и закрытии, а также после некоторой обработки событий! Большое вам спасибо за ваш ответ!
CHill60
Если бы это был я, у меня был бы сервис для запуска на ПК Start, чтобы запустить микроконтроллер и закрыть его, когда приложение закроется. Тогда не имело бы значения, если бы это был перезапуск. Имейте в виду, что методы, предложенные по ссылке, которую я предоставил, отличаются от каждой версии Windows, поэтому вы делаете свое приложение не обновляемым.