如何按名称获取所有 MS Word 运行 进程

How to get All MS Word running process by name

我正在尝试获取所有 运行 MS Word 进程,但它总是 returns 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;
    }
}

你的问题所依据的整个前提都是错误的。您认为每个 Word 顶级 window 都与一个不同的进程相关联。这种信念是不正确的。 Word的架构是一进程多windows。这很简单,可以使用任务管理器程序进行验证。

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