Другими словами, есть ли у работающего приложения какой-либо способ узнать, что компьютер переходит в спящий режим?
2 ответа
Windows, конечно, делает. См. Https://docs.microsoft.com/en-us/windows/desktop/power/power-management-portal .
Приложение может даже сообщить системе, что спящий режим или спящий режим не должны возникать, поскольку приложение занято - см. API SetThreadExecutionState
.
Windows отправит всем приложениям сообщение WM_POWERBROADCAST.
Приложение получит сообщение в своем обработчике сообщений и сможет узнать, что компьютер переходит в состояние пониженного энергопотребления.
Система предоставляет приложению около двух секунд для обработки этого уведомления. Если приложение все еще выполняет операции после того, как его выделение времени истекло, система может прервать приложение.