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

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.033 c
14-1081961623
Fay
2004-04-14 20:53
2004.04.11
Что случилось с орешником?


1-1082617439
sergeii
2004-04-22 11:03
2004.04.11
Funkcija konvertirujushiaja Cifri v slova


4-1079599813
b0bi
2004-03-18 11:50
2004.04.11
Как получить Handle


1-1080039003
Pavlik_Morozov
2004-03-23 13:50
2004.04.11
Проект Delphi => диаграммы UML


3-1081679405
Крутыш
2004-04-11 14:30
2004.04.11
Не работает скроллинг!!!





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