Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.12.30;
Скачать: CL | DM;

Вниз

перехват WM_QUERYENDSESSION   Найти похожие ветки 

 
aleko   (2007-12-03 19:45) [0]

Доброго времени суток, уважаемые Мастера. Подскажите - при перехвате сообщения WM_QUERYENDSESSION пытаюсь запустить cmd.exe - пишет не могу инициализировать приложение... :( Можно ли как-то его побороть?


 
clickmaker ©   (2007-12-03 19:47) [1]

Return Values
If an application can terminate conveniently, it should return TRUE; otherwise, it should return FALSE.

Remarks
By default, the DefWindowProc function returns TRUE for this message

(c) MSDN

Если вернешь true или отдашь DefWindowProc, то винда продолжит выгружаться, отсюда и "не могу инициализировать приложение"


 
aleko   (2007-12-03 19:58) [2]

Я впихнул выброс сообщения ShowMessage - выгрузка останавливается, так как работа моей программы не завершается. А потом запуск cmd. Но все равно - "не могу инициализировать"........ или нужно конкретно вернуть FALSE?


 
Skyle ©   (2007-12-04 07:12) [3]

it SHOULD return false.

Если ты в своей программе просто тормозишь, то через определённое время (по дефолту 5 секунд) твой процесс просто сдохнет и всё.
А если ты вернёшь FALSE, то завершение работы прекратиться.


 
homm ©   (2007-12-04 07:19) [4]

> [3] Skyle ©   (04.12.07 07:12)
> то через определённое время (по дефолту 5 секунд)

ну конечно. 20 по дефолту для сервисов. А приложения никто автоматом грохать не будет, пользователю выведится сообщение сначала с обратным отсчетом, потом просто с предложением закрыть.


 
Skyle ©   (2007-12-04 07:45) [5]

> homm ©   (04.12.07 07:19) [4]
Уточнение > Skyle ©   (04.12.07 07:12) [3]

Для каждого процесса, владеющего окном верхнего уровня, Csrss посылает сообщения WM_QUERYENDSESSION всем его потокам с циклом выборки Windows-сообщений. Если поток возвращает TRUE, процесс завершения работы системы продолжается. Тогда Csrss посылает потоку сообщение WM_ENDSESSION с требованием завершить свою работу. Csrss ждёт завершения потока в течение времени, указанного в NKCU\Control Panel\Desktop\NungAppTimeout (по умолчанию - 5000 мс). Если в течение указанного времени поток не завершается, Csrss открывает диалоговое окно ....(вывод этого окна можно отключить, присвоив параметру NKCU\Control Panel\Desktop\AutoEndTasks значение, равное 1). Диалоговое окно уведомляет пользователя о том, что корректное завершение данной программы невозможно, и предлагает принудительно завершить процесс или отменить завершение работы системы (таймаут для этого диалогового окна не предусмотрен, а значит, на этом этапе запрос на завершение может ждать бесконечно долго).

© Соломон, Руссинович, "Внутреннее устройство Windows"


 
aleko   (2007-12-04 18:39) [6]

..все понятно, спасибо за помощь.. :)



Страницы: 1 вся ветка

Текущий архив: 2007.12.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.017 c
2-1196868657
vegarulez
2007-12-05 18:30
2007.12.30
Вопрос - Как узнать что TPanel.BringtoFront=True?


3-1187186976
greg123
2007-08-15 18:09
2007.12.30
Использование хранимых процедур в MS SQL SERVER 2000


15-1196172466
Slider007
2007-11-27 17:07
2007.12.30
С днем рождения ! 27 ноября 2007 вторник


15-1196174838
All More system
2007-11-27 17:47
2007.12.30
Автопоиск в висте работает в фоновом режиме


15-1196317116
vasIZmax
2007-11-29 09:18
2007.12.30
Сбор файлов локалке