如何按名称获取所有 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?
我正在尝试获取所有 运行 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?