Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "WinAPI";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];

Вниз

Какие системные сообщения приходят приложению, при его закрытии?   Найти похожие ветки 

 
TankMan   (2002-11-25 22:08) [0]

Сабж.. но уточню... какое сообщение приходит при "убитии процесса" (TerminateProcess), и просто при выходе из приложения... и самое главное, как сделать обработчик этих событий,... вобщем проблема стоит в том, что мне ну просто позарез, обязательно, и без исключений, нужно, чтобы при завершении моей программы,т.е. при получении такой команды, она выполняла ряд действий, а потом уж и закрывалась...


 
esu   (2002-11-25 22:55) [1]

Если просто при выходте то смотри OnClose, OnDestroy. А вот TerminateProcess боюсь тебе ничего не пошлет :(


 
Cobalt   (2002-11-25 23:02) [2]

В таких случаях рекомендуют ставить хук - при убитии "главной" проги (которая поставила хук), ДЛЛ-ка хука выгружается, и, при выгрузке, можно проверить наличие проги - убита она или нет? (напр., есть ответ от главного окна или нет)


 
TankMan   (2002-11-25 23:12) [3]

>>Cobalt
Но когда главное окно будет убито, будет уже поздно...

Нет мне именно эти сообщения нужно отлавливать, а как?


 
Cobalt   (2002-11-26 00:20) [4]

>>Но когда главное окно будет убито, будет уже поздно
можно данные хранить в Мап-файле, тогда они сохранятся, и хук, выгружаясь, сделает своё "тёмное дело" ;)
Если ты о сообщениях OnClose, OnDestroy, то смотри события формы.


 
TankMan   (2002-11-26 03:26) [5]

нет я о сообщениях WM_CLOSE WM_EXIT кажись так... вот как их обрабатывать?


 
Morfein   (2002-11-26 10:15) [6]

private
procedure OnFormExit(var Msg : TMessage); message WM_EXIT;
end;

...
...

procedure Tform1.OnFormExit(var Msg : TMessage);
begin
MessageBox(0, "Это окно появляется в ответ на сообщение WM_EXIT", nil, 0);
end;


 
Игорь Шевченко   (2002-11-26 12:14) [7]

При TerminateProcess никаких уведомлений процессу не посылается (AFAIK)

Terminating a process causes the following:

1. All of the object handles opened by the process are closed.
2. All of the threads in the process terminate their execution.
3. The state of the process object becomes signaled, satisfying any threads that had been waiting for the process to terminate.
4. The states of all threads of the process become signaled, satisfying any threads that had been waiting for the threads to terminate.
5. The termination status of the process changes from STILL_ACTIVE to the exit value of the process.


 
TankMan   (2002-11-26 13:09) [8]

>>Morfein
Спасибо... щас попробую...

>>Игорь Шевченко
Жаль что при убити процесса ничего не посылается... а еще один вопрос... а почему некоторые приложения, при их зависании, не убиваются никак? или это просто из-за збоя в коде самого приложения?


 
Игорь Шевченко   (2002-11-26 13:21) [9]

Нет таких приложений, которые никак не убиваются...По крайней мере, если речь идет о NT-системах. В потребительских Windows я не знаю, что происходит...


 
vaneks   (2002-11-26 13:50) [10]

При закрытии формы delphi пораждает еще onCloseQuery, но только в том случае если та недал ей закрыть форму в onClose.


 
TankMan   (2002-11-26 19:30) [11]

Да нет я получил ответ, который я хотел, больше мне ничего не нужно...


 
rasen   (2002-11-28 11:44) [12]

Это все интересно про терминате процесс - но вот у меня пробл, что еть прога которая при посылке терминате процесс выдает диалог закрытия (А вы уверены, что хотите выйти?) - и обойти это никак не могу :((((
Мож кто-че посоветует ?????


 
Fantasist   (2002-11-30 03:21) [13]


> При TerminateProcess никаких уведомлений процессу не посылается
> (AFAIK)


WM_DESTOY посылается окнам. Проверенно в win98.


 
Arkan   (2002-11-30 15:40) [14]

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


 
TankMan   (2002-12-10 00:07) [15]

погодите-те при TerminateProcess явно WM_DESTROY не посылается... только что проверил...
А вот вопрос созник, как сделать так, чтобы при получении сообщения WM_DESTROY, программка моя не закрылась? я знаю, что отлавливают сообщение WM_SYSCOMMAND или что-то в этом роде, и в wParam уже смотрят SC_CLOSE, но прикол в том, что когда программка вырубается Application.Terminate, это сообшение просто не приходит с таким параметром... а парметра SC_DESTROY нету к сожалению (насколько я знаю, и насколько я понял). Вобщем можно как нибудь "отменить" WM_DESTROY?



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

Форум: "WinAPI";
Текущий архив: 2003.01.23;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.009 c
1-72396
MV-GROB
2003-01-13 12:10
2003.01.23
Не хочет работать COM DLL


1-72249
3asys
2003-01-14 15:31
2003.01.23
Запрет ввода текста в TComboBox


4-72584
bent
2002-12-08 08:39
2003.01.23
Win XP


4-72600
Sergei
2002-12-06 21:39
2003.01.23
Ресурс в Exe файле


3-72124
race1
2002-12-30 14:38
2003.01.23
скорость





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский