delphi - 如何抑制 Delphi DataSnap 错误消息对话框?

标签 delphi messagebox dcom datasnap

我们在 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) 也许应用程序上的全局钩子(Hook)可以解决这个问题

http://www.chami.com/tips/delphi/011497D.html

解决方案2)

使用 EurekaLog 或 MadExcept 来找出应用程序引发错误的位置,并处理该错误。

解决方案3)

应用程序消息对话框上的全局钩子(Hook),钩子(Hook)示例如下

http://delphi.about.com/gi/o.htm?zi=1/XJ&zTi=1&sdn=delphi&cdn=compute&tm=43&f=22&su=p284.9.336.ip_p504.1.336.ip_&tt=2&bt=1&bts=1&zu=http%3A//www.delphicorner.f9.co.uk/articles/apps7.htm

您查询应用程序的所有消息,当您捕获该窗口时,您将处理消息而不是应用程序。因为我现在没有时间,我不知道到底哪个是 messagedlg 引发的 wmessage。

希望有帮助。

致以诚挚的问候,

关于delphi - 如何抑制 Delphi DataSnap 错误消息对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3316692/

相关文章:

windows - 如何使用 Delphi 让 Toast 通知保留在 Windows 10 操作中心

delphi - ADO 与 Firedac 报价标志在 .Locate

javascript - 在JavaScript中,有没有比alert()更合适的弹出信息的函数?

python - pyqt5 - 关闭/终止应用程序

c# - Windows Phone 8.1 WinRT 应用程序中的自定义消息框

c# - 远程 OPC 已连接但无法读取

delphi - 在 Delphi 中如何验证文本框仅包含数字?

Delphi QR 码组件/生成器?

delphi - 在DCOM中设置远程启动

delphi - 在 DCOM 中设置远程启动