在我通过 com interop 与 Excel 交互的 winforms 应用程序中,
我正在尝试附加到现有的 Excel 进程(如果有的话)。获取对象似乎运行良好,但如果 Excel 应用程序被最小化(这很可能在我的用例中),我无法恢复窗口并将其带到前面。
我尝试了以下语句:
try
app = (Excel.Application)Marshal.GetActiveObject("Excel.Application");
catch (Exception) { /* ignore */ }
if (app == null)
{
app = new Excel.Application();
app.Visible = true;
}
if (app.ActiveWindow.WindowState == Excel.XlWindowState.xlMinimized)
app.ActiveWindow.WindowState = Excel.XlWindowState.xlNormal;
wb = ...
wb.Activate();
这些都没有任何效果。我怎样才能做到这一点?
(请注意:我的问题与存在现有实例的情况有关,因此“Visible = true”不是必需的,此线程不适用。)