当我们激活它时,为什么Word"没有出现"?

haw*_*bsl 7 .net ms-word z-order office-interop

我们的winforms应用程序与MS Word交互,我们在生成文档时运行此代码,并且我们希望在我们的应用程序前面的Word中显示它:

[setup w as a Word interop object]

w.Visible = True
w.Activate()
Run Code Online (Sandbox Code Playgroud)

当推出到运行Office 2007的XP机器时,它按预期工作.

运行Office 2010Win7计算机上,文档加载到我们的应用程序后面并在任务栏上闪烁.

有任何想法吗?

Chr*_*ian 7

我最近偶然发现了类似的问题.我的.NET程序称为COM应用程序,但在Win7上,它有时既不会出现在任务栏中,也不会出现在桌面上.我真的无法找到原因,但我编写了以下函数来解决这个问题:

[System.Runtime.InteropServices.DllImport("User32.dll")]
private static extern bool SetForegroundWindow(IntPtr hwnd);

private static void BringAppToFront() {
    foreach (var p in System.Diagnostics.Process.GetProcesses().Where(p => p.ProcessName == "COMInstanceName")) {
        if (p.MainWindowHandle.ToInt32() != 0)
            SetForegroundWindow(p.MainWindowHandle);
    }
}
Run Code Online (Sandbox Code Playgroud)