Главная страница
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.028 c
3-1081771900
Lamer2
2004-04-12 16:11
2004.04.11
Запрос


7-1075379231
*partizan*
2004-01-29 15:27
2004.04.11
Работа с регистром


8-1072128224
Trad
2003-12-23 00:23
2004.04.11
на форме gif-анимация


1-1082905364
testt
2004-04-25 19:02
2004.04.11
Подскажите с Format ( %x , [i]);


1-1080218772
highlander
2004-03-25 15:46
2004.04.11
Округление чисел типа real