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

Вниз

Как программно закрыть окно с сообщением   Найти похожие ветки 

 
pavlov   (2004-03-19 10:39) [0]

Привет всем!

Представте ситуацию, что ваше приложение (не дай бог :) )
допустило ошибку, и винда в ответ на эту ошибку
вывело сообщение с ее описанием (ну типа access violation
или тому подобное).
Или вы вывели окно сообщения сами, скажем:
 Application.MessageBox("Трали-вали","Тили-тили", MB_OK);

Как программно закрыть это окно сообщения,
чтобы главная форма снова стала активной?
Подскажите пожалуста, очень надо!
Спасибо за внимание.


 
Плохиш   (2004-03-19 10:50) [1]

>pavlov   (19.03.04 10:39)

> винда в ответ на эту ошибку
> вывело сообщение с ее описанием

Начнём с того, что сообщение вывела не винда
TApplication.OnException + F1

> Или вы вывели окно сообщения сами,

Если программа вывела сообщение, значит она ждёт каких-то действий от пользователя. Во всех остальных случаях сообщения выводится не должны.


 
pavlov   (2004-03-19 11:02) [2]

Допустим.
Но меня интересует больше как прихлопнуть это сообщение.
Именно программно!


 
vk_3057 ©   (2004-03-24 16:01) [3]

Так как окно сообщения этот всё таки окно, то оно имеет свой Handle, который можно получить, а затем сделать его невидимым:
ShowWindow(WndHandle,SW_HIDE);
или закрыть его:
SendMessage(WndHandle,WM_CLOSE,0,0);


 
Defunct ©   (2004-03-24 16:09) [4]

Но меня интересует больше как прихлопнуть это сообщение.
Именно программно!


SendMessage(GetActiveWindow, WM_CLOSE, 0,0);


 
LexXP ©   (2004-03-24 16:12) [5]

Надо не дать появиться этому окну.
Во всех критичных местах пиши

try
except
end


 
Digitman ©   (2004-03-24 16:16) [6]


> pavlov   (19.03.04 11:02) [2]


в твоих руках - куча возможностей по недопущению такой "проблемы".. да и не проблема это вовсе ..

зачем создавать себе трудности только ради того, чтобы затем их героически преодолевать ?


 
Digitman ©   (2004-03-24 16:19) [7]


> Или вы вывели окно сообщения сами, скажем:
>  Application.MessageBox("Трали-вали","Тили-тили", MB_OK);


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

спрашивается, зачем просить пользователя сказать "А" или "В", сли мы столь упрямы и все равно пойдем по пути "С" ?


 
Defunct ©   (2004-03-24 16:27) [8]

pavlov   (19.03.04 10:39)  

PS: Если у вас возник подобный вопрос, то может самое простое решение поставить в DPR файле перед Application.Run строку:
Halt(0);

и не мучить пользователя, компьютер, да и себя в т.ч.


 
Rem ©   (2004-03-24 16:52) [9]

см. Плохиш (19.03.04 10:50) [1]
TApplication.OnException

И лучше при этом "невыведенное сообщение" писать в лог, чтобы разработчик (Вы) имел возможность обнаружить свои ошибки. А иначе не избегнуть жалоб пользователей на то, что "программа ничего не делает и ничего не сообщает".

Лирическое отступление: А еще круче - отсылать сразу разработчику скрытым письмом по электроной почте сообщение об ошибке. Пользователи будут "ужасно" рады такой "активности программы", а интернет-провайдер (разработчика) разорвет договор из-за высокого траффика входящих писем.
Короче, как говорится: "Мы, программисты 80-х, Вам, программистам 00-х, передаем все баги и глюки, которые были в наших программах! Все возможные и невозможные Runtime Error"ы и Access Violation"ы! В добрый путь!"...


 
WebErr ©   (2004-03-24 16:54) [10]

Самое лучшее это:

> Defunct ©   (24.03.04 16:09) [4]
> SendMessage(GetActiveWindow, WM_CLOSE, 0,0);



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

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

Наверх




Память: 0.49 MB
Время: 0.045 c
1-1080117589
alex123
2004-03-24 11:39
2004.04.11
Как запретить смену страницы а PageControl


1-1079730463
Mirror
2004-03-20 00:07
2004.04.11
MDI


1-1082748935
Demi
2004-04-23 23:35
2004.04.11
Проблема с типом PAnsiChar.


1-1082547148
Axil
2004-04-21 15:32
2004.04.11
Общий скрол окна и его фрейма


4-1075978820
Лена
2004-02-05 14:00
2004.04.11
Как по hwnd диалога получить IDD_* его шаблона?