在我通过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不适用。 )
答案 0 :(得分:2)
您希望app.WindowState = xlNormal
因为app.ActiveWindow
是当前工作表而不是应用程序实例主窗口。