【发布时间】:2010-02-10 16:46:48
【问题描述】:
在使用进程类的 C# 中,我可以获得进程主窗口的句柄,但我需要访问不是其进程主窗口的窗口。如何获取进程所有窗口的句柄?
【问题讨论】:
标签: c#
在使用进程类的 C# 中,我可以获得进程主窗口的句柄,但我需要访问不是其进程主窗口的窗口。如何获取进程所有窗口的句柄?
【问题讨论】:
标签: c#
EnumChildWindows 函数可能会对您有所帮助。子窗口也可以有子窗口等等。
【讨论】:
您可以 P/Invoke GetWindowThreadProcessId() 获取拥有主窗口的 UI 线程的线程 ID。从那里,您可以使用EnumThreadWindows() 找到该线程拥有的任何其他顶级窗口。顶级窗口拥有的任何子窗口(控件)都可以通过EnumChildWindows() 找到。访问pinvoke.net 获取必要的 P/Invoke 声明。
【讨论】:
P/调用 user32 的 EnumThreadWindows 函数,您提供的回调将获得给定线程的窗口句柄。 Process.GetCurrentProcess().Threads 应该返回给您调用EnumThreadWindows 的所有相关线程。
【讨论】: