|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
28.02.2011, 21:10 | #1 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Server2008(x64) не может закрыть моё приложение при завершении работы системы, но убивается через ДЗ
Всем доброго времени суток!
Собственно такая проблема: Обратился юзер с проблемойю У него стоит Windows Server 2008 r2 , стоит моя программа. Как только он(юзер) пытается завершить работу системы(выключение пк, перезагрузка оного) то, система не перезагружается(выключается) т.к. не может закрыть мою программу. Все другие проги успешно закрываются. Мою приходится убивать принудительно(как через дисп. задачь). На Windows 7,Windows server 2003,Windows XP таких проблем нет. В чём может быть прчина и как это исправить? Пака решение, это убивать программу принудительно через планировщик задачь. Но это не выход. Последний раз редактировалось Человек_Борща; 28.02.2011 в 21:14. |
01.03.2011, 05:33 | #2 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
Небось в OnCloseQuery() возвращаешь canClose = false всегда, чтобы из трея не выбило. А надо возвращать true, если перед этим словил WM_QUERYENDSESSION.
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
01.03.2011, 18:08 | #3 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
А можно пример с WM_QUERYENDSESSION? У меня в CloseCquerty код проверки "сворачивания в трей":
Код:
|
01.03.2011, 18:46 | #4 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
Код:
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
01.03.2011, 23:38 | #5 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Благодарен, поставил +.
Маленький вопрос: Как происходит выходит из программы? Я предположил это так: WM_QUERYENDSESSION => Рассылка WM_QUIT всем процессам по очереди => Программа получает сообщение => CloseQuerty => Close Это правильно? |
02.03.2011, 08:53 | #6 |
Старожил
Регистрация: 03.01.2011
Сообщений: 2,508
|
WM_QUERYENDSESSION высылается только в трех случаях (определяется флагом в lParam):
1) ENDSESSION_CLOSEAPP - когда система решила, что приложение используется какой-то ресурс, который должен быть изменен (файл) или заканчивается (память). 2) ENDSESSION_LOGOFF - когда юзер делает логофф (ну или shutdown, там все-равно сначала логофф). 3) ENDSESSION_CRITICAL - когда произошло нечто ужасное ) Причем, все эти случаи не взаимоисключающие ) При обработке WM_QUERYENDSESSION мы как можно быстрее возвращаем True, если готовы к закрытию, или False, если не готовы (не рекомендуется). Для этого там вызывается inherited, чтобы стандартный обработчик вернул True. Если вернули True, то чуть позже получим WM_ENDSESSION, вот тут можно спокойно, не спеша сохранять файлы и выполнять прочую подготовку к закрытию. Если за 5 секунд не ответилии, то высвечивается диалог "Эта программа не отвечает.." При обычном закрытии приложения никаких ENDSESSION не высылается. Собсвенно, так мы и понимаем разницу между тем, что юзер нажал крестик (и мы должны тихо уйти в трей) и между завершением работы системы (когда мы тоже должны завершить работу).
"Когда приходит положенное время, человек перестаёт играть в пинбол. Только и всего."
|
02.03.2011, 17:20 | #7 |
Старожил
Регистрация: 30.12.2009
Сообщений: 11,430
|
Примного благодарен, жаль ещё плюсов нельзя поставить=)
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запуск exe/dll при завершении работы windows 7 | AdoL | Windows | 1 | 24.12.2010 10:21 |
Как закрыть приложение при выключение Winsows | pro100-delphi | Общие вопросы Delphi | 12 | 10.09.2009 16:12 |
создание dll при старте приложения и удаление при завершении | TyoshA | Общие вопросы Delphi | 7 | 13.07.2009 13:56 |
приложение без формы, событие при завершении | ERASERROR | Общие вопросы Delphi | 10 | 22.02.2008 14:10 |
как поставить иконку в моё приложение? | steck | Паскаль, Turbo Pascal, PascalABC.NET | 2 | 16.05.2007 18:12 |