如何获取Word应用程序的Hwnd/Process Id,并将其设置为Foreground Window

Joe*_*Net 5 c# vba office-interop word-vba

我希望我的Word应用程序在自动化完成后进入前台.

Excel中的等效项是直接的 - Excel Application对象具有.Hwnd属性,您可以将其与Windows API结合使用:

SetForegroundWindow((IntPtr)excelApp.Hwnd);
Run Code Online (Sandbox Code Playgroud)

但是,Word应用程序没有.Hwnd属性.

我尝试在这个序列中使用Activate():

wordDoc.Activate();
wordApp.Activate();
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

我已经看过使用应用程序名称查找进程,但可能有多个Word运行副本.

谢谢

小智 5

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

System.Diagnostics.Process[] processArray =
    System.Diagnostics.Process.GetProcessesByName("WinWord");
System.Diagnostics.Process word = processArray[0];
SetForegroundWindow(word.MainWindowHandle);
Run Code Online (Sandbox Code Playgroud)