crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Выключение компьютера
FenixTES
  опции профиля:
сообщение 14.11.2009, 22:36
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 14.11.2009
Пользователь №: 1230

Спасибо сказали: 0 раз(а)




Репутация:   0  


у меня есть две задачи, новот не знаю как их реализовать, наверное через винапи:
1) Поймать синал выключения
2) Послать сигнал выключения
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.11.2009, 7:14
Сообщение #2


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Если ты собираешся выключать компьютер программой, то зачем и откуда тебе ловить сигнал выключения?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Elfinit
  опции профиля:
сообщение 15.11.2009, 13:13
Сообщение #3


Участник
**

Группа: Участник
Сообщений: 127
Регистрация: 17.3.2009
Из: Казань
Пользователь №: 619

Спасибо сказали: 7 раз(а)




Репутация:   1  


ShellExecute("shutdown -t 00 -s");

другой пример: http://www.codersource.net/mfc_shutdown_timer.html

если под "сигналами" имелись ввиду winapi-сообщения, то посмотри WM_ENDSESSION
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
FenixTES
  опции профиля:
сообщение 15.11.2009, 13:28
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 20
Регистрация: 14.11.2009
Пользователь №: 1230

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(Litkevich Yuriy @ 15.11.2009, 7:14) *
Если ты собираешся выключать компьютер программой, то зачем и откуда тебе ловить сигнал выключения?

прога должна словить сигнал выключения, потом переслать другой, а та чтото делает(долго объяснять), и потом откючает комп
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Elfinit
  опции профиля:
сообщение 15.11.2009, 13:58
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 127
Регистрация: 17.3.2009
Из: Казань
Пользователь №: 619

Спасибо сказали: 7 раз(а)




Репутация:   1  


унаследуй от QApplication, определи там winEvent, отлавливай WM_ENDSESSION (или WM_QUERYENDSESSION, вроде).

Сообщение отредактировал Elfinit - 15.11.2009, 14:01
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.11.2009, 14:22
Сообщение #6


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(FenixTES @ 15.11.2009, 16:28) *
прога должна словить сигнал выключения, потом переслать другой, а та чтото делает
пока эти две проги точат лясы, ОСь их обоих прибьёт не дожидаясь, когда они угомонятся, в лине на всё про всё, по умолчанию 10 сек.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Elfinit
  опции профиля:
сообщение 15.11.2009, 15:29
Сообщение #7


Участник
**

Группа: Участник
Сообщений: 127
Регистрация: 17.3.2009
Из: Казань
Пользователь №: 619

Спасибо сказали: 7 раз(а)




Репутация:   1  


Цитата(Litkevich Yuriy @ 15.11.2009, 15:22) *
пока эти две проги точат лясы, ОСь их обоих прибьёт не дожидаясь

А есть какая-нибудь возможность перехватить это системное событие и попросить ось "немного подождать"?)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 15.11.2009, 16:26
Сообщение #8


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(Elfinit @ 15.11.2009, 18:29) *
А есть какая-нибудь возможность перехватить это системное событие и попросить ось "немного подождать"?)
даже не знаю, иногда виндовоз по долгу не выключается, стало быть кого-то ждёт. В лине обычно тактика такая:
* Посылается широковещательный (т.е. всем) сигнал "Завершить приложение"
* ждём 10сек
* Посылается широковещательный сигнал "убить всех"
* Выкл. компьютер
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 15.11.2009, 16:42
Сообщение #9


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

Спасибо сказали: 44 раз(а)




Репутация:   9  


Есть методы QApplication::commitData() И QApplication::saveState(), которые вызываются при завершении сеанса работы в операционной системе. В качестве параметра эти методы получают объект класса QSessionManager, у которого есть метод cancel(), прекращающий процесс выхода (у Шлее про это немного написано).
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 25.4.2024, 14:40