Как я могу закрыть диалоги с сообщениями об ошибках Delphi DataSnap?
Мы запускаем приложение DataSnap Delphi 2009 на Windows 2003 Server. DataSnap Client и Server находятся на одном компьютере с использованием DCOM через Borland Socketserver. Клиент запускает фоновое пакетное задание.
Иногда мы обнаруживаем, что клиент не может подключиться к приложению сервера, и на рабочем столе сервера отображается диалоговое окно с сообщением, например, "Не удалось подключиться к серверу. Не удалось найти сетевой путь". или "Объект не найден".
Наш клиентский код Delphi никогда не использует диалоговое окно сообщения для отображения ошибок или исключений, вместо этого мы используем try... кроме... finally... end и ведение журнала для обработки ошибок подключения, поэтому я предполагаю, что диалог создается методом DataSnap. Есть ли способ подавить это модальное диалоговое окно?
Обновление: все исключения обрабатываются в подпрограммах более низкого уровня, основной цикл заботится об отключении и повторном подключении при возникновении исключения (обработанного или необработанного):
while True do
begin
Connect;
while True do
begin
try
DoMyWork;
except
Break;
end;
end;
Disconnect;
end;
1 ответ
Решение 1) может быть, глобальный хук через application.onexception может решить проблему
http://www.chami.com/tips/delphi/011497D.html
решение 2)
используйте EurekaLog или MadExcept, чтобы узнать, откуда приложение вызывает эту ошибку, и обработать ошибку.
решение 3)
глобальный перехват над диалогами сообщений приложения, пример перехвата ниже
вы запрашиваете все сообщения приложения, и когда вы ловите это окно, вы обрабатываете сообщение, а не приложение. потому что у меня сейчас нет времени, я точно не знаю, какой именно wmessage поднял messagedlg.
надеюсь, что это помогло.
с уважением,