.net - 为什么我们激活它时Word没有 "come to front"?

标签 .net ms-word office-interop z-order

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

[setup w as a Word interop object]

w.Visible = True
w.Activate()

推广到 时运行 Office 2007 的 XP 机器 这按预期工作。

Win7 机器运行 Office 2010 文档在我们的应用程序后面加载并在任务栏上闪烁。

有任何想法吗?

最佳答案

我最近偶然发现了一个类似的问题。我的 .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);
    }
}

关于.net - 为什么我们激活它时Word没有 "come to front"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4955366/

相关文章:

c# - 在远程计算机上使用与 Excel 的互操作

c# - WPF - 将 DataGrid 导出到 Excel,Microsoft.Office.Interop.Excel 替代 Office 2019

c# - Process.Start 使用 UAC on 的不同凭据

C# LINQ 查询 - 分组依据

Delphi通过注册表检测Word版本

c++ - 如何将图像,表格和纯文本导出到MS Word?

C#- Microsoft.Office.Interop.Excel 将 excel 中的所有行复制到另一个工作表

c# - 为 generi 方法抛出的 'Common Language Runtime detected an invalid program.' 异常需要解决方法

c# - Metro 框架中 Tab 按钮组合框的尴尬行为

ms-word - Word 2007 功能区 - 正确对齐组中的控件