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 2010的Win7计算机上,文档加载到我们的应用程序后面并在任务栏上闪烁.
有任何想法吗?
我最近偶然发现了类似的问题.我的.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)