В моем приложении используется API Win32 SetSuspendState()
для запуска приостановки или спящего режима системы, когда он завершил выполнение длительной задачи.Запросить приостановление на Vista, но разрешить другим приложениям отменять
API принимает параметр «ForceCritical», который определяет, приостанавливается ли система немедленно или передается ли она PBT_APMQUERYSUSPEND
, чтобы разрешить другим приложениям отменять приостановку. Мое приложение использует это, чтобы хорошо играть с другими приложениями, такими как Media Player, поэтому оно не приостанавливается, если вы слушаете музыку или что-то в этом роде.
По какой-то причине, начиная с Vista, MS have changed things so this parameter is ignored, поэтому SetSuspendState
сразу вызывает приостановку и другие приложения, которые не имеют возможности остановить его.
Кто-нибудь знает, как я могу вернуть желаемое «вежливое» поведение снова на Vista?