抑制(不弹出)对话框

将 Aspen Plus 作为自动化服务器启动时,默认行为是不显示任何消息或对话框,除非:

  • 调用了专门用于显示对话框的自动化方法;或

  • GUI 已可见,且用户主动选择了会弹出对话框的操作(如点击菜单项)。

这一静默行为可通过 IHapp.SuppressDialogs 属性关闭。 当应用程序设为可见并供交互使用时,通常应将 SuppressDialogs 设为 False

若对话框被抑制,每当遇到警告消息或被抑制的对话框时,将触发出向事件 OnDialogSuppressed()。 详见“处理 Aspen Plus 事件”章节。

某些自动化接口方法一定会显示交互对话框; 另一些方法仅在参数不足时才弹出对话框。例如:

Call Happ.IHapp.Engine.Reinit()          ' 会显示 Reinit 对话框
Call Happ.IHapp.Engine.Reinit(IAP_REINIT_SIMULATION) ' 不会显示对话框

Python 直译版:控制对话框弹出与事件监测

import win32com.client as win32
import pythoncom

class AspenEvents:
    """捕获 Aspen 事件"""
    def OnDialogSuppressed(self):
        print("[事件] 一个对话框/警告被抑制")

def main():
    pythoncom.CoInitialize()
    # 1. 启动 Aspen Plus 并绑定事件
    ap = win32.DispatchWithEvents("AspenPlus.Document.34.0", AspenEvents)

    # 2. 默认已抑制对话框;如要交互,可关闭抑制
    ap.SuppressDialogs = False   # True = 静默;False = 允许弹出

    # 3. 示例:两种 Reinit 调用
    # 3.1 无参数 → 会弹出 Reinit 对话框(若 SuppressDialogs=False)
    # ap.Engine.Reinit()

    # 3.2 带完整参数 → 不会弹出对话框
    IAP_REINIT_SIMULATION = 0   # 来自 happ.tlb 的枚举值
    ap.Engine.Reinit(IAP_REINIT_SIMULATION)

    # 4. 运行模拟,若出现被抑制的警告会触发 OnDialogSuppressed
    ap.Engine.Run2()

    input("按 Enter 结束...\n")
    ap.Quit()
    pythoncom.CoUninitialize()

if __name__ == "__main__":
    main()

使用要点

  1. SuppressDialogs = True 默认静默;设为 False 恢复交互。

  2. DispatchWithEvents 绑定 OnDialogSuppressed,可记录或前端提示。

  3. 对任何可能弹窗的方法,传足参数即可避免对话框;留空参数则按用户可见性决定是否弹出。