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

Вниз

Отменить WM сообщение посланное программе....   Найти похожие ветки 

 
TankMan   (2002-12-13 23:56) [0]

Вот проблема, я хотел бы узнать, как отменить какое либо сообщение посланное программе, например ну хотябы WM_DESTROY,... обработчик, на это событие срабатывает, но почему-то событие у формы OnDestroy срабатывает быстрее...но не в этом суть, получаю я это сообщение допустим, а как его отменить??? т.е. занулить или заменить... например пришло мне сообщение WM_DESTROY а я его заменить хочу на WM_CLOSE а как?


 
Alex870   (2002-12-14 00:06) [1]

В WindowProc описывай реакцию на нужное сообщение, ну например
case Message of
wm_destroy :
begin
SendMessage(Window,WM_Close,0,0);
end;


 
TankMan   (2002-12-14 00:27) [2]

Да но, wm_destroy то тоже дойдет, насколько я понимаю?
да и что за windowproc? А как мне сделать так, чтобы вообще это сообщение никак не повлияло на программку, т.е. анулировалось?


 
Rouse_   (2002-12-14 00:37) [3]

Создай процедуру

procedure Block(var Message: TMessage); message WM_DESTROY;

Все, в процедуре ты должен сам решать что делать с пришедшим сообщением, либо Form.Close либо ничего не делать, можешь проверить, форма не закроется

Желаю успехов


 
Kirill45   (2002-12-14 02:13) [4]

Я не уверен что это правильно - но это будет работать
....
type
TForm1 = class(TForm)
.....
//ну например:
procedure WMDestroy (var Msg: TMessage); message WM_DESTROY;
.....

implementation
{$R *.dfm}

....

procedure WMDestroy (var Msg: TMessage);
begin
// Ваш код !!!
//(если по мимо ваших заморочек вам бы хотелось пропустить
// сообщение дальше добавьте: inherited;
end;




 
TankMan   (2002-12-15 03:19) [5]

Я вот что сделал... сделал обработчик WM_CLOSE и WM_DESTROY, с "пустыми" процедурами... насколько я понял, стандартный менеджер программ посылает именно эти сообщения, когда я хочу завершить от туда процесс... но при завершении процесса от туда программа закрывается... или я что-то не так понял?


 
Opuhshii   (2002-12-15 09:07) [6]

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

1. All of the object handles opened by the process are closed.
2. All of the threads in the process terminate their execution.
а это в свою очередь...
1. If the target thread owns a critical section, the critical section will not be released.
2. If the target thread is executing certain kernel32 calls when it is terminated, the kernel32 state for the thread"s process could be inconsistent.
3. If the target thread is manipulating the global state of a shared DLL, the state of the DLL could be destroyed, affecting other users of the DLL.
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.


 
Opuhshii   (2002-12-15 09:20) [7]

... ещё в догонку,. есть книга,.. Джеффри Рихтер её написал... и в сети она есть,.. и в магазинах книжных,.. "разработка приложений для ms windows" называется...


 
Alx2   (2002-12-15 10:30) [8]

>TankMan © (13.12.02 23:56)
Посмотри доку по PeekMessage. Кажется, она это умеет


 
TankMan   (2002-12-15 11:02) [9]

Opuhshii
Посылает посылает он сообщения, программа получает WM_CLOSE и WM_DESTROY, я поставил в обработчик выдавать MessageBox при срабатывании, выдаются... и после этого приложение закрывается...


 
Opuhshii   (2002-12-15 11:35) [10]

2TankMan © (15.12.02 11:02)
>:-| это когда кнопочку "снять задачу" нажимаешь?, или "Завершить процесс"?



 
TankMan   (2002-12-15 21:53) [11]

Ды я про снять задачу только и говорил...
мне именно это и нужно.... я знаю, что завершить процесс отменить... ну этим способом не возможно...



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

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

Наверх




Память: 0.46 MB
Время: 0.008 c
1-96695
Fill
2003-01-21 20:35
2003.01.30
Кто-нибудь знает алгоритмы


1-96779
Armageddon
2003-01-22 10:00
2003.01.30
BitBtn


3-96605
qwerty2
2003-01-13 17:41
2003.01.30
Странное поведение компонента DBGrid


3-96512
Z-man7777
2003-01-10 13:51
2003.01.30
Какой тип должен быть у источника данных?


4-97088
Vicheslav
2002-12-15 14:17
2003.01.30
моя прога (Место)(без) Explorer





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский