如何通过名称获取所有MS Word运行过程

时间:2016-02-05 15:39:07

标签: c# winapi process

我正在尝试获取所有正在运行的MS Word进程,但它始终返回1。 我怎样才能获得确切的进程数量?我确实打开了多个文件。

Process[] localByName = Process.GetProcessesByName("WINWORD");
foreach (Process p in localByName)
{ 
    if (!String.IsNullOrEmpty(p.MainWindowTitle))
    {
        Rect NotepadRect = new Rect();
        IntPtr ptr = p.MainWindowHandle;
        GetWindowRect(ptr, ref NotepadRect);
        objSchemeDetail.Top = NotepadRect.Top;
        objSchemeDetail.Bottom = NotepadRect.Bottom;
        objSchemeDetail.Left = NotepadRect.Left;
        objSchemeDetail.Right = NotepadRect.Right;
    }
}

1 个答案:

答案 0 :(得分:1)

您的问题所依据的整个前提是错误的。您认为每个Word顶级窗口都与一个不同的进程相关联。这种看法是不正确的。 Word的体系结构有一个具有多个窗口的进程。这很简单,可以使用任务管理器程序进行验证。

您真正想要做的是找到与特定流程关联的所有顶级窗口。这是以前多次提出的一个问题。例如:How to enumerate all windows belonging to a particular process using .NET?