IPB
ЛогинПароль:

> Программа мешает перезагрузиться
Unconnected
сообщение 2.04.2010 21:08
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Привет всем.

Сомневался между разделом Delphi и этим, запостил сюда. Есть программа на делфи, обычное такое VCL-приложение, не служба, никаких хуков, немного API (типа FindWindow, GetForeignWindow). И вот столкнулся с проблемой, что когда эта программа работает, то компьютер не получается перезагрузить или выключить (через Пуск - Выключить компьютер...). Все остальные приложения, работающие в тот момент, порядочно закрывается, а это висит, и перезагрузки/выключения не происходит. Без этого приложения всё нормально перезагружается. В журнале событий такое предупреждение (с жёлтым значком): "Попытка Перезагрузка HOME-********** не удалась". На данный момент кода с собой нет. Что это может быть?


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
volvo
сообщение 2.04.2010 21:49
Сообщение #2


Гость






Цитата
Всё ясно
Вот к чему приводят шаблоны... smile.gif Чего тебе ясно?

Цитата
Очень часто мы сталкиваемся с проблемой, когда наша программа будучи запущенная в фоне и/или свёрнутая, например, в панель задач должна что-то сделать, когда Windows выключается, перезагружается или просто меняется пользователь.
Если мы не будем отслеживать такую ситуацию, то в худшем случае у нас могут просто потеряться какие-либо данные или Windows просто не сможет выполнить перезагрузку до конца. Ей будет мешать наша программа. Не нужно думать, что Windows перед перезагрузкой рассылает приложениям сообщения о закрытии, так чтобы у тех выполнились обработчики TForm.onCloseQuery/onClose. ОС Windows отсылает перед перезагрузкой, выключением или сменой пользователя сообщения WM_QUERYENDSESSION, а потом по его успешному завершению WM_ENDSESSION. Наше приложение должно поймать эти сообщения и отреагировать так чтобы дать понять, что мы согласны перезагружаться. В частности на сообщение WM_QUERYENDSESSION мы должны вернуть не 0
 К началу страницы 
+ Ответить 

Сообщений в этой теме


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

 

- Текстовая версия 10.08.2025 2:33
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"