Excel互操作:恢复最小化窗口

时间:2010-05-07 13:21:03

标签: excel interop windowstate

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

1 个答案:

答案 0 :(得分:2)

您希望app.WindowState = xlNormal因为app.ActiveWindow是当前工作表而不是应用程序实例主窗口。