【问题标题】:Get handles to all windows of a process获取进程所有窗口的句柄
【发布时间】:2010-02-10 16:46:48
【问题描述】:

在使用进程类的 C# 中,我可以获得进程主窗口的句柄,但我需要访问不是其进程主窗口的窗口。如何获取进程所有窗口的句柄?

【问题讨论】:

    标签: c#


    【解决方案1】:

    EnumChildWindows 函数可能会对您有所帮助。子窗口也可以有子窗口等等。

    还有GetWindowEnumThreadWindows

    【讨论】:

      【解决方案2】:

      您可以 P/Invoke GetWindowThreadProcessId() 获取拥有主窗口的 UI 线程的线程 ID。从那里,您可以使用EnumThreadWindows() 找到该线程拥有的任何其他顶级窗口。顶级窗口拥有的任何子窗口(控件)都可以通过EnumChildWindows() 找到。访问pinvoke.net 获取必要的 P/Invoke 声明。

      【讨论】:

        【解决方案3】:

        P/调用 user32 的 EnumThreadWindows 函数,您提供的回调将获得给定线程的窗口句柄。 Process.GetCurrentProcess().Threads 应该返回给您调用EnumThreadWindows 的所有相关线程。

        【讨论】:

          猜你喜欢
          • 2011-03-02
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-11-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2010-12-25
          相关资源
          最近更新 更多