我面对的似乎是另一个Windows Bug。我需要显示一个窗口,该窗口是另一个应用程序的主窗口的模态。我这样做的方法是首先获取其他应用程序进程的窗口句柄:
var handle = Process.GetProcessById(appProcId).MainWindowHandle;
然后我使用该句柄创建IWin32Window
:
IWin32Window owner = new MyWindowHandleWrapper(handle);
(MyWindowHandleWrapper
是IWin32Window
接口的简单实现。)
然后我创建一个表单并在IWin32Window
上显示模态:
var form = new ...
form.ShowDialog(owner);
如果一切正常,这就像是一种享受。但是,如果创建模式窗体的应用程序崩溃,或者被杀死(例如,从任务管理器中),那么表单在其上方以模态显示的应用程序窗口仍将被冻结。
这真的只是我需要忍受的另一个Windows脑损伤,或者我能做些什么呢?
我使用的是.NET 2.0,VS 2010,Windows 7。