获取进程所有窗口的句柄
Posted
技术标签:
【中文标题】获取进程所有窗口的句柄【英文标题】:Get handles to all windows of a process 【发布时间】:2010-02-10 16:46:48 【问题描述】:在使用进程类的 C# 中,我可以获得进程主窗口的句柄,但我需要访问不是其进程主窗口的窗口。如何?
【问题讨论】:
【参考方案1】:EnumChildWindows 函数可能会对您有所帮助。子窗口也可以有子窗口等等。
还有GetWindow和EnumThreadWindows
【讨论】:
【参考方案2】:您可以 P/Invoke GetWindowThreadProcessId()
获取拥有主窗口的 UI 线程的线程 ID。从那里,您可以使用EnumThreadWindows()
找到该线程拥有的任何其他***窗口。***窗口拥有的任何子窗口(控件)都可以通过EnumChildWindows()
找到。访问pinvoke.net 获取必要的 P/Invoke 声明。
【讨论】:
【参考方案3】:P/调用 user32 的 EnumThreadWindows
函数,您提供的回调将获得给定线程的窗口句柄。 Process.GetCurrentProcess().Threads
应该返回给您调用EnumThreadWindows
的所有相关线程。
【讨论】:
以上是关于获取进程所有窗口的句柄的主要内容,如果未能解决你的问题,请参考以下文章