Как я могу определить, находится ли ожидающее или запланированное завершение работы в данный момент без прерывания?
Я не думаю, что можно определить, когда произойдет отключение.
Вы можете определить, запланировано ли отключение, используя следующий алгоритм:
Запустите "тестовое" отключение, используя shutdown /t xxx
с большим значением для времени.
- Для Windows 7 или более поздней максимально допустимое время было увеличено с 600 секунд до 315 360 000 секунд (10 лет)
Если уже есть ожидающее завершение работы, то shutdown /t xxx
завершится ошибкой с уровнем ошибки 1190
:
Выключение системы уже запланировано. (1190)
Если вы не получили вышеуказанную ошибку, то знаете, что ранее не было запланировано завершение работы, поэтому вам нужно удалить "тестовое" завершение работы с помощью shutdown /a
.
Выше может быть сделано в пакетном файле:
@echo off
rem perform a "test" shutdown with a large time
shutdown /t 999999
rem if there is already a shutdown pending then %ERRORLEVEL% will be 1190
if %ERRORLEVEL% equ 1190 (
echo A shutdown is pending
) else (
rem cancel the "test" shutdown
shutdown /a
echo No shutdown is pending
)
Замечания:
- Я не тестировал вышеупомянутый пакетный файл, так как не хочу сейчас выключать компьютер.
Дальнейшее чтение