目前是这么做的,专门开了一个Thread,每隔1s去判断对应的窗口句柄的窗口状态是否隐藏。以下是Thread里面的代码。
ProcessHelper.IsWindowVisible调用的是Windows的API(IsWindowVisible)while (ProcessHelper.IsWindowVisible(formItem.HWND))
{
    Thread.Sleep(1000);
}在处理Excel窗口时遇到了问题,Excel关闭时,会有不小的几率提示“Excel退出错误”。如果把以上代码中Thread.Sleep改成0.1s就基本上会100%报错了。估计原因可能是正好在Excel退出时,调用了IsWindowVisible,导致的Excel报错。不知道有没有好的策略来防止这个错误出现。打开PPT窗口的话倒是不出来这个提示,但是PPT直接会出来提交错误给微软的窗口(Error Report)。