Windows 7桌面显示图标窗口类名称
来源:互联网 发布:mac复制图片 编辑:程序博客网 时间:2024/06/08 06:46
在windows XP时代,我们获取桌面图标窗口的句柄往往用一下语句:
HWND hwndParent = ::FindWindow( "Progman", "Program Manager" );HWND hwndSHELLDLL_DefView = ::FindWindowEx( hwndParent, NULL, "SHELLDLL_DefView", NULL );HWND hwndSysListView32 = ::FindWindowEx( hwndSHELLDLL_DefView, NULL, "SysListView32", "FolderView" );
可是在windows 7时代,上述代码失效了,经过SKY++分析,发现类名为"Progman"的窗口根本就没有子窗口,而桌面图标窗口在一个类名为"WorkerW"的窗口下面。其中:窗口"FloderView"(类名SysListView32)即为桌面图标窗口,因此,老的方法自然无法成功,但是由于类名为"WorkerW"的窗口不止一个,所以必须遍历到含有类名为"SHELLDLL_DefView"子窗口的才是,故:
Windows 7下,我们取桌面图标窗口的句柄使用以下语句:
HWND hParent = NULL;HWND hDefView = NULL;HWND hDeskIcon = NULL;//获得第一个WorkerW类的窗口hParent = FindWindowEx(0, 0, L"WorkerW", L"");//接着遍历while ((!hDefView) && hParent){hDefView = FindWindowEx(hParent, 0, L"SHELLDLL_DefView", 0);hParent = FindWindowEx(0, hParent, L"WorkerW", L"");}hDeskIcon = FindWindowEx(hDefView,0,L"SysListView32",L"FolderView");
好了,经过尝试,这段代码确实可以再win7下正常工作,但是肯定不能再winXp下正常工作(我没有尝试),因此,要写出具有通用性的代码,这段代码还需网友改进(其实上面两段代码加以判断叠加即可)
0 0
- Windows 7桌面显示图标窗口类名称
- Windows 7桌面显示图标窗口类名称
- Windows 7桌面显示图标窗口类名称
- Windows 7桌面显示图标窗口句柄的获取
- 桌面”显示桌面“图标
- Windows 7 桌面IE图标
- android 如何将桌面较长的图标名称显示完整(有些APP的图标名称太长)
- 找回“显示桌面”图标
- 桌面显示IE图标
- 增加 显示桌面 图标
- Windows 7下桌面IE图标显示与修复的完美解决方法
- windows xp 快速启动栏"显示桌面"图标恢复方法
- windows桌面显示“系统文件夹”和“系统图标”
- Windows Server 2012 R2 展示在桌面显示计算机图标
- android中怎么将桌面较长的图标名称显示完整
- android 如何将桌面和主菜单较长的图标名称显示完整
- android launcher3将桌面较长的图标名称显示完整解决方案
- 找回“显示桌面” 图标 显示图标.scf
- 离散傅立叶变换的实现
- 删除数据表,重新定位自增的字段
- ANT安装、环境变量配置及验证
- Netstat
- uva 10618 Tango Tango Insurrection 动态规划
- Windows 7桌面显示图标窗口类名称
- 在Web.xml中自动扫描Spring的配置文件及resource时classpath*:与classpath:的区别
- Android内部存储--InternalStorage
- 测试文章发表
- java.lang.NoClassDefFoundError: Lorg/hibernate/cache/CacheProvider
- ios-开发 替换系统原生只读属性的 值
- 编程题目--救火英雄
- 错误代码: 1007 Can't create database 'test'; database exists
- libevent 主流程解析