我有一个多线程应用程序,它会触发很多类似的进程。
有时其中一个进程抛出一个错误的MessageBox,这对整个应用程序产生了负面影响。
我希望能够探出此MessageBox并向其发送OK / CLOSE按钮命令。
最大的问题是MessageBox / Window没有标题,所以我不能使用它:
IntPtr window = FindWindow(null, "");
while (window != IntPtr.Zero)
{
Console.WriteLine("Window found, closing...");
//use some function to close the window
SendMessage((int)window, WM_SYSCOMMAND, SC_CLOSE, 0);
window = IntPtr.Zero;
}
如何调整此代码,或者如何使用类似的方法找到没有标题的Window,然后将其关闭?
我需要遍历整个过程吗?请记住,这些进程具有相似的名称,因此即使我可以使用特定的名称获得所有进程,但在查找导致该问题的进程时还是会遇到困难...
PS:我无法编辑应用程序的源代码,我现在必须制作一个小的FIX。