1

在我通过 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”不是必需的,此线程不适用。

4

1 回答 1

2

您想要app.WindowState = xlNormalapp.ActiveWindow是当前工作表而不是应用程序实例主窗口。

于 2010-05-07T13:42:37.490 回答