我们在 Windows 2003 Server 上运行 DataSnap Delphi 2009 应用程序。 DataSnap 客户端和服务器位于同一台计算机上,通过 Borland Socketserver 使用 DCOM。客户端运行后台批处理作业。
有时,我们发现客户端无法连接到服务器应用程序,并在服务器桌面上显示消息对话框,例如“无法连接到服务器。找不到网络路径”。或“未找到对象导出器”。
我们的 Delphi 客户端代码从不使用消息对话框来显示错误或异常,而是使用 try ... except .. finally ... end 和日志记录来处理连接错误,所以我猜该对话框是由 DataSnap 方法创建的。有没有办法抑制这个模式对话框?
更新:所有异常都在较低级别的例程中处理,主循环负责在引发异常(已处理或未处理)时断开连接和重新连接:
while True do
begin
Connect;
while True do
begin
try
DoMyWork;
except
Break;
end;
end;
Disconnect;
end;
解决方案1)
也许应用程序上的全局钩子可以解决这个问题
http://www.chami.com/tips/delphi/011497D.html http://www.chami.com/tips/delphi/011497D.html
解决方案2)
使用 EurekaLog 或 MadExcept 来找出应用程序引发错误的位置,并处理该错误。
解决方案3)
应用程序消息对话框上的全局钩子,钩子示例如下
您查询应用程序的所有消息,当您捕获该窗口时,您将处理消息而不是应用程序。因为我现在没有时间,我不知道到底哪个是 messagedlg 引发的 wmessage。
希望有帮助。
此致,
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)