Форум: "Основная";
Текущий архив: 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.042 c