Как определить, выключается ли компьютер, чтобы сохранить сеанс

Я делаю RPG-игру с C ++ / x86 asm. Мой вопрос связан с компонентом C ++. В C ++ / win32 как я могу определить, выключается ли компьютер, выключается ли он или что-то еще, чтобы я мог сохранить сеанс игры. В моей игре есть опция «сохранить», но если пользователь или другая программа решают отключить компьютер, как я могу обнаружить это с помощью какого-то хука API, чтобы я мог мгновенно сохранить сеанс игры в текстовом файле.

Теперь, пожалуйста, не предлагайте вариант, создав поток для пассивной работы, так как я хочу, чтобы размер файла был минимальным, поэтому, если вы можете предложить какой-то хук WM_, это было бы здорово. Я бы сослался на MSDN, но я не хочу часами искать в их директории WM.

2

Решение

Вы можете обработать сохранение сессии в ответ на WM_ENDSESSION сообщение. Обратите внимание, что после того, как ваш обработчик сообщений вернется из обработки, ваш процесс может быть прерван в любое время, поэтому вам нужно сохранить его непосредственно во время обработки сообщения, а не просто установить флаг, чтобы позволить некоторому более позднему коду обрабатывать сохранение, потому что это позже код не может быть выполнен.

Комментарий предполагает WM_QUERYENDSESSION сообщение. Это имеет немного другое значение: это дает приложениям возможность жаловаться на окончание сеанса и дает пользователю возможность не выходить из системы / завершать работу системы. Исходя из вашего вопроса, вы не собираетесь предотвращать подобные вещи, поэтому WM_ENDSESSION кажется, лучше подходит для меня.

6

Другие решения


По вопросам рекламы ammmcru@yandex.ru
Adblock
detector