2

假设我有 2 个 pdf 文档,我已经用 acrobat 精细阅读器打开了它们。所以我有2个不同的窗口。但是当我使用这段代码时:

foreach (Process p in Process.GetProcesses("."))
{
    try
    {
        Console.WriteLine("\r\n");
        Console.WriteLine("\r\n Window Title:" + p.MainWindowTitle.ToString());
        Console.WriteLine("\r\n Process Name:" + p.ProcessName.ToString());
        Console.WriteLine("\r\n Window Handle:" + p.MainWindowHandle.ToString());
        Console.WriteLine("\r\n Memory Allocation:" + p.PrivateMemorySize64.ToString());
    }
    catch { }
}

它只给了我最后选择的 acrobat 窗口。但是我两个都需要,谢谢。

4

1 回答 1

4

Process只提供“主”窗口句柄,而不是每个窗口。

但是,您可以通过 Windows API 和 PInvoke 完成此操作。 EnumWindows将让您枚举系统上打开的窗口。然后,您可以使用GetWindowThreadProcessId来查看 Window 是否属于您的进程。

此时,您将拥有进程的每个窗口的窗口句柄。使用 Handle,您可以调用GetWindowText来获取窗口标题。

于 2012-07-10T19:51:31.023 回答