如何获取Word应用程序的Hwnd/进程ID,并将其设置为前台窗口

5
我希望当自动化完成时,我的Word应用程序能够处于前台。
在Excel中,这个等价的操作很简单 - Excel应用程序对象有一个.Hwnd属性,你可以与Windows API一起使用:
SetForegroundWindow((IntPtr)excelApp.Hwnd);

然而,Word应用程序没有 .Hwnd 属性。
我尝试在这个顺序中使用 Activate():
wordDoc.Activate();
wordApp.Activate();

但这并不起作用。

我尝试通过应用程序名称查找进程,但可能会有多个Word副本正在运行。

谢谢。


有一个在SO上描述它的帖子。https://dev59.com/z3RA5IYBdhLWcg3wzhbZ - Dimi Takis
2
谢谢Greco - 我看到了那篇帖子,但我希望保持代码的开销尽可能低。 - Joe.Net
1个回答

5

您可能需要在第一次之后迭代processArray。在Word 2010中,无论打开多少实例,任务管理器中只显示一个WinWord。

System.Diagnostics.Process[] processArray =
    System.Diagnostics.Process.GetProcessesByName("WinWord");
System.Diagnostics.Process word = processArray[0];
SetForegroundWindow(word.MainWindowHandle);

+1 有用的信息,但我必须插话一句:关于Word 2010+只会生成一个“WinWord”进程,这绝对是不正确的——只需调用“new Application(...)”两次即可。 - BrainSlugs83

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接