【发布时间】:2016-02-27 23:01:49
【问题描述】:
我在大量 Excel 工作簿上运行 C# 脚本,其中涉及在每个工作簿中调用宏;由于错误处理程序,宏有时会产生一个 MsgBox,并且会暂停脚本的执行,直到我在 MsgBox 中单击“确定”。
MsgBox 的标题文本为“Error in processSub”,正文为“Error (Type Mismatch)”。
我想也许我可以有一个并发线程来查找所有当前打开的窗口,如果找到 MsgBox,请单击“确定”。我正在尝试使用以下方式查找窗口:
using System.Diagnostics;
public Process getErrorWindow()
{
Process[] processList = Process.GetProcesses();
foreach (Process process in processList)
{
if (process.MainWindowTitle=="Error in processSub")
{
return process;
}
}
}
但这并没有找到任何东西。当我查看processList[] 时,它似乎只找到了主 Excel 窗口,而不是其 VBA 代码生成的任何子窗口。有没有办法找到 MsgBox 并点击它的 OK 按钮?
【问题讨论】: