![]() |
Здравствуйте, гость ( Вход | Регистрация )
![]() ![]() |
![]() |
FenixTES |
![]()
Сообщение
#1
|
Студент ![]() Группа: Участник Сообщений: 20 Регистрация: 14.11.2009 Пользователь №: 1230 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
у меня есть две задачи, новот не знаю как их реализовать, наверное через винапи:
1) Поймать синал выключения 2) Послать сигнал выключения |
|
|
Litkevich Yuriy |
![]()
Сообщение
#2
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
Если ты собираешся выключать компьютер программой, то зачем и откуда тебе ловить сигнал выключения?
|
|
|
Elfinit |
![]()
Сообщение
#3
|
Участник ![]() ![]() Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: ![]() ![]() ![]() |
ShellExecute("shutdown -t 00 -s");
другой пример: http://www.codersource.net/mfc_shutdown_timer.html если под "сигналами" имелись ввиду winapi-сообщения, то посмотри WM_ENDSESSION |
|
|
FenixTES |
![]()
Сообщение
#4
|
Студент ![]() Группа: Участник Сообщений: 20 Регистрация: 14.11.2009 Пользователь №: 1230 Спасибо сказали: 0 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Elfinit |
![]()
Сообщение
#5
|
Участник ![]() ![]() Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: ![]() ![]() ![]() |
унаследуй от QApplication, определи там winEvent, отлавливай WM_ENDSESSION (или WM_QUERYENDSESSION, вроде).
Сообщение отредактировал Elfinit - 15.11.2009, 14:01 |
|
|
Litkevich Yuriy |
![]()
Сообщение
#6
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Elfinit |
![]()
Сообщение
#7
|
Участник ![]() ![]() Группа: Участник Сообщений: 127 Регистрация: 17.3.2009 Из: Казань Пользователь №: 619 Спасибо сказали: 7 раз(а) Репутация: ![]() ![]() ![]() |
|
|
|
Litkevich Yuriy |
![]()
Сообщение
#8
|
![]() разработчик РЭА ![]() ![]() ![]() ![]() ![]() ![]() ![]() Группа: Сомодератор Сообщений: 9669 Регистрация: 9.1.2008 Из: Тюмень Пользователь №: 64 Спасибо сказали: 807 раз(а) Репутация: ![]() ![]() ![]() |
А есть какая-нибудь возможность перехватить это системное событие и попросить ось "немного подождать"?) даже не знаю, иногда виндовоз по долгу не выключается, стало быть кого-то ждёт. В лине обычно тактика такая:* Посылается широковещательный (т.е. всем) сигнал "Завершить приложение" * ждём 10сек * Посылается широковещательный сигнал "убить всех" * Выкл. компьютер |
|
|
MoPDoBoPoT |
![]()
Сообщение
#9
|
Участник ![]() ![]() Группа: Участник Сообщений: 172 Регистрация: 7.5.2009 Из: Москва Пользователь №: 738 Спасибо сказали: 44 раз(а) Репутация: ![]() ![]() ![]() |
Есть методы QApplication::commitData() И QApplication::saveState(), которые вызываются при завершении сеанса работы в операционной системе. В качестве параметра эти методы получают объект класса QSessionManager, у которого есть метод cancel(), прекращающий процесс выхода (у Шлее про это немного написано).
|
|
|
![]() ![]() ![]() |
![]() |
|
Текстовая версия | Сейчас: 29.4.2025, 18:11 |