Завершение работы системы блокировки приложений Qt - PullRequest
3 голосов
/ 25 августа 2010

У меня есть приложение Qt 4.6.2, работающее в системе Windows XP SP2 x64.

Когда я нажимаю кнопку физического питания / выключения системы, когда мое приложение работает, ничего не происходит,приложение не закроется, и система не завершит работу.

Если я зайду в меню «Пуск» и нажму кнопку «Выключение», мое приложение закроется, но система не завершит работу.

При закрытом приложенииСистема нормально отключается в обоих направлениях.

Есть какие-нибудь идеи, как я могу заставить свое приложение работать и позволить системе корректно завершить работу?

Спасибо, Зак

Ответы [ 2 ]

3 голосов
/ 27 августа 2010

Прочитать о QSessionManager и QApplication :: commitData - это больше Qt way

2 голосов
/ 25 августа 2010

Вам необходимо переопределить QCoreApplication :: winEventFilter в вашем производном классе QCoreApplication / QApplication и обработать сообщение WM_QUERYENDSESSION там.

Я не уверен,WM_QUERYENDSESSION будет доставлено вашему приложению или сообщению о системе широковещательной передачи (и у меня нет машины с Windows, пригодной для тестирования). Если вам кажется, что вы не получаете это сообщение, вам нужно установить фильтр событий .

В любом случае вам нужно правильно ответить на WM_QUERYENDSESSION - это сообщение, которое вам нужно обработать.

...