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

C# 如何获取Word应用程序的Hwnd/进程Id,并将其设置为前台窗口,c#,vba,office-interop,ms-word,C#,Vba,Office Interop,Ms Word,我想让我的Word应用程序在自动化完成后出现在前台 Excel中的等效项是直截了当的-Excel应用程序对象有一个.Hwnd属性,可以与Windows API一起使用: SetForegroundWindow((IntPtr)excelApp.Hwnd); 但是,Word应用程序没有.Hwnd属性 我已尝试按以下顺序使用Activate(): wordDoc.Activate(); wordApp.Activate(); 但这是行不通的 我已经查看了使用应用程序名称查找进程的过程,但是Wor

我想让我的Word应用程序在自动化完成后出现在前台

Excel中的等效项是直截了当的-Excel应用程序对象有一个.Hwnd属性,可以与Windows API一起使用:

SetForegroundWindow((IntPtr)excelApp.Hwnd);
但是,Word应用程序没有.Hwnd属性

我已尝试按以下顺序使用Activate():

wordDoc.Activate();
wordApp.Activate();
但这是行不通的

我已经查看了使用应用程序名称查找进程的过程,但是Word running可能有多个副本

谢谢


Joe

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

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

嗯,有一个关于它的帖子。谢谢Greco-我确实看到了那篇文章,我希望能降低代码开销….+1的信息,但我必须插嘴:Word 2010肯定不是这样的+只产生了一个“WinWord”进程--只需调用“新应用程序(…)”两次就够了。