我们在Windows 2003 Server上运行DataSnap Delphi 2009应用程序。 DataSnap客户端和服务器在Borland Socketserver上使用DCOM在同一台计算机上。客户端运行后台批处理作业。
有时,我们发现客户端无法连接到服务器应用程序并在服务器桌面上显示消息对话框,指示例如“无法连接到服务器。无法找到网络路径”。或者“找不到Objectexporter。”
我们的Delphi客户端代码从不使用消息对话框来显示错误或异常,而是使用try ... except .. finally ... end和logging来处理连接错误,所以我猜对话框是由DataSnap创建的方法。有没有办法抑制这个模态对话框?
更新:所有异常都在较低级别的例程中处理,主循环负责在引发异常(处理或未处理)时断开连接并重新连接:
while True do
begin
Connect;
while True do
begin
try
DoMyWork;
except
Break;
end;
end;
Disconnect;
end;
答案 0 :(得分:3)
解决方案1) 也许是application.onexception的全局钩子可以处理问题
http://www.chami.com/tips/delphi/011497D.html
解决方案2)
使用EurekaLog或MadExcept来查找应用程序引发该错误的位置,并处理错误。
解决方案3)
应用程序消息对话框的全局钩子,下面是一个钩子示例
您查询所有应用程序的消息,当您捕获该窗口时,您将处理消息而不是应用程序。因为我现在没有时间我不确切地知道messagedlg提出的wmessage是什么。
希望有所帮助。
最好的问候,