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

时间:2010-07-22 06:22:56

标签: delphi forms modal-dialog showmodaldialog

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

我想做的是在应用程序打开任何模态对话框时推迟警报弹出窗口。

我尝试了GetLastActivePopup(MyMainWindow.Handle),但似乎一直都返回非零值。

3 个答案:

答案 0 :(得分:4)

答案 1 :(得分:3)

试试

if not IsWindowEnabled(MyMainWindow.Handle) then

这也可以解决非Delphi对话框采用模态操作的情况,例如windows.MessageBox(Handle...。或者显示公共对话框(即OpenDialog)。

答案 2 :(得分:2)

使用AnyPopup()函数

关于GetLastActivePopup()。它可能返回值与

时的hWnd参数相同
  • hWnd识别的窗口最近处于活动状态。
  • hWnd标识的窗口没有任何弹出窗口。
  • hWnd标识的窗口不是顶级窗口,也不属于另一个窗口。