找回密码
 立即注册→加入我们

QQ登录

只需一步,快速开始

搜索
热搜: 下载 VB C 实现 编写
查看: 3816|回复: 4

一个关于枚举窗口的小经验

[复制链接]
发表于 2015-6-23 09:08:02 | 显示全部楼层 |阅读模式

欢迎访问技术宅的结界,请注册或者登录吧。

您需要 登录 才可以下载或查看,没有账号?立即注册→加入我们

×
本文说的窗口,并不纯指“肉眼可看的窗体”,而是指代拥有HWND的一切“物件”。

很多人以为EnumWindows足以枚举出系统所有的窗口,错!它只能枚举出顶层的窗口。MSDN原文:Enumerates all top-level windows on the screen by passing the handle to each window.

有个函数叫做EnumThreadWindows,很多人也会认为,这应该可以枚举出某个线程的所有窗口了吧?错!它只能枚举出“非子窗口”。MSDN原文:Enumerates all nonchild windows associated with a thread by passing the handle to each window.

还有一个函数叫做EnumChildWindows,貌似这货才能枚举出一个顶层窗口之下的所有窗口。MSDN原文:Enumerates the child windows that belong to the specified parent window by passing the handle to each child window.

所以,如果要枚举系统所有的窗口,必须:
1.使用EnumWindows,获取一份“一级HWND”,然后根据每个“一级HWND”再使用EnumChildWindows枚举出所有“二级HWND”。
2.枚举系统所有线程,使用EnumThreadWindows,获取N份“一级HWND”,然后根据每个“一级HWND”再使用EnumChildWindows枚举出所有“二级HWND”。
回复

使用道具 举报

发表于 2015-6-23 10:56:19 来自手机 | 显示全部楼层
哈哈哈。蓝后就可以做一个3D桌面特效插件了。
回复 赞! 靠!

使用道具 举报

发表于 2015-6-23 20:07:48 | 显示全部楼层
具体如何枚举可以参照spy++
回复 赞! 靠!

使用道具 举报

发表于 2015-7-6 02:31:30 | 显示全部楼层
这........................
回复

使用道具 举报

发表于 2022-5-13 16:29:16 | 显示全部楼层

感谢楼主分享~~~
回复 赞! 靠!

使用道具 举报

本版积分规则

QQ|Archiver|小黑屋|技术宅的结界 ( 滇ICP备16008837号 )|网站地图

GMT+8, 2024-11-22 05:34 , Processed in 0.030106 second(s), 22 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表