【问题标题】:How to get All MS Word running process by name如何按名称获取所有 MS Word 运行进程
【发布时间】:2016-02-05 15:39:07
【问题描述】:

我正在尝试让所有正在运行的 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;
    }
}

【问题讨论】:

  • 你有一个带有多个窗口的进程。
  • 但在其他文件中,如记事本,它提供了多个进程
  • 是的,但 Word 不同。
  • 为什么您认为您所提问题的答案会帮助您解决问题?顺便说一句,你真正想解决什么问题?
  • 我想获取每个打开的窗口的位置(位置)。例如,我打开了 4 个不同的文件,我可以保存它们的位置并再次重新打开它们。

标签: c# winapi process


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-10-02
    • 1970-01-01
    • 1970-01-01
    • 2022-08-03
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 2017-12-26
    相关资源
    最近更新 更多