代码之家  ›  专栏  ›  技术社区  ›  rossmcm

Delphi-检测我的应用程序是否打开了模式对话框

  •  2
  • rossmcm  · 技术社区  · 14 年前

    我有一个Delphi2006应用程序,当检测到错误情况时会弹出一个模式警报对话框。当在空闲处理程序中检查错误条件时,如果恰好显示另一个模式对话框,则该对话框可以在另一个模式对话框的顶部弹出。对于用户来说,这可能会导致一种混乱的情况,即应用程序主窗体在警报对话框关闭后无法获得焦点,因为这是另一个模糊不清的模式对话框。

    我尝试了GetLastActivePopup(MyMainWindow.Handle),但它似乎总是返回非零。

    3 回复  |  直到 14 年前
        2
  •  3
  •   Sertac Akyuz    14 年前

    只是测试一下

    if not IsWindowEnabled(MyMainWindow.Handle) then
    

    当一个非Delphi对话框是模态的时候,这也会考虑到一些情况,比如 windows.MessageBox(Handle... . 或者 公共对话框 正在显示(即TopEndDialog)。

        3
  •  2
  •   Jeroen Wiert Pluimers    14 年前

    AnyPopup ()功能

    关于 GetLastActivePopup (). 当

    • hWnd标识的窗口不拥有任何弹出窗口。
    • 由hWnd标识的窗口不是顶级窗口,或者它属于另一个窗口。