【问题标题】:How can I supress Delphi DataSnap error message dialogs?如何抑制 Delphi DataSnap 错误消息对话框?
【发布时间】:2011-03-20 00:05:37
【问题描述】:

我们在 Windows 2003 Server 上运行 DataSnap Delphi 2009 应用程序。 DataSnap 客户端和服务器位于同一台计算机上,使用 DCOM over Borland Socketserver。客户端运行后台批处理作业。

有时,我们发现客户端无法连接到服务器应用程序,并在服务器桌面上显示一个消息对话框,例如“无法连接到服务器。找不到网络路径。”或“找不到对象导出器。”

我们的 Delphi 客户端代码从不使用消息对话框来显示错误或异常,而是使用 try ... except .. finally ... end 和 logging 来处理连接错误,所以我猜对话框是由 DataSnap 创建的方法。有没有办法抑制这个模态对话框?

更新:所有异常都在较低级别的例程中处理,主循环负责在引发异常(已处理或未处理)时断开和重新连接:

  while True do
  begin
    Connect;
    while True do
    begin
      try
        DoMyWork;
      except
        Break;
      end;
    end;
    Disconnect;
  end;

【问题讨论】:

    标签: delphi messagebox dcom datasnap


    【解决方案1】:

    解决方案 1) 也许应用程序的全局钩子可以解决这个问题

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

    解决方案 2)

    使用 EurekaLog 或 MadExcept 来找出应用程序从何处引发错误并处理错误。

    解决方案 3)

    应用程序消息对话框的全局钩子,下面是一个钩子示例

    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到底是哪个。

    希望有所帮助。

    最好的问候,

    【讨论】:

    • 应用程序使用了madExcept和异常记录,出现错误提示框时好像没有抛出异常
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-26
    • 2012-10-21
    • 2017-02-22
    • 1970-01-01
    • 2011-02-11
    • 2013-03-18
    相关资源
    最近更新 更多