Главная страница
    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.042 c
14-1081956844
}|{yk
2004-04-14 19:34
2004.04.11
Первичный ключ - ошибка создания


14-1079359521
Piter
2004-03-15 17:05
2004.04.11
Что-то форум тормозит


3-1079461757
ginger
2004-03-16 21:29
2004.04.11
Quick Report для базы Unicode


7-1079895576
Gun Expert
2004-03-21 21:59
2004.04.11
Чтение нестандартного значения реестра из Delphi


14-1079171594
ChcngerMan
2004-03-13 12:53
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
Английский Французский Немецкий Итальянский Португальский Русский Испанский