Windows CE如何根据文件名获取其对应文件图标icon
来源:互联网 发布:外汇非农数据 编辑:程序博客网 时间:2024/06/08 17:27
Windows CE如何根据文件名获取其对应文件图标icon 1、背景介绍 如果把一文件copy到Windows CE5.0系统的U盘(或者桌面等目录)中,那么这个文件就会有其对应的图标显示,如下图。那么Windows CE5.0文件系统是如何管理文件和其对应图标的呢? 2、文件图标简介 在WCE5.0系统中,你能看到的图标都有其对应的图标资源,问题就在于这些图标在哪里,而WCE系统又是如何管理的呢?说到底,文件图标资源存在于两种形式——exe文件和dll文件中。 ◆EXE文件图标 每个exe文件都有其对应的文件图标,可以通过函数ExtractIconEx来获取exe文件中图标。 ◆dll文件中的图标 许多dll中都包含有图标资源,可以通过ExtractIconEx和LoadImage来获取dll中的图标(要知道图标ID)。 3、Windows CE源码分析 有关这部分源码在:$:/WINCE500/PUBLIC/SHELL/OAK/HPC/CESHELL/API/iconcache.cpp文件中,其实就涉及到一个函数: CIconCache::CacheInfo * CIconCache::CacheItem(LPCWSTR pszFilePath) 理解了这个函数,也就理解了本课题。首先输入参数仅仅是一个文件的完整路径,也就是说WCE只要根据一文件名就可以得到其对应文件类型图标。如图3-1紧接着ASSERT(!PathIsDirectory(pszFilePath))确保输入参数不是路径。PathIsGUID判断文件名是不是GUID,不是GUID就是系统文件了(// It's a file system file)。 图3-1 CacheItem函数 PathIsExe函数判断文件是否为exe文件,是就用ExtractIconEx获取其图标。不是exe文件继续往下走,用PathFindExtension获取文件后缀名。根据后缀名到注册表去查找文件类型——// TYPE: Figure out the type information,再根据后缀去查找图标——// ICON: Get the requested icons。 这里注册表会包含后缀名的一些信息。举个例子,比如*.bmp文件,先查找注册表[HKEY_CLASSES_ROOT/.bmp],于是你可以看到如图3-2所示的画面,其中Default项的值为bmpimage,那么在注册表[HKEY_CLASSES_ROOT/bmpimage/DefaultIcon]会看到如下信息,说明bmp文件图标就是imageviewer.exe的图标。再看看dll文件的信息[HKEY_CLASSES_ROOT/dllfile/DefaultIcon],如图3-4,说明*.dll文件的图标是ceshell.dll中ID为4608的图标。 图3-2 图3-3 图3-4 4、总结 WCE文件系统根据文件名,通过注册表管理其对应的文件图标。总结有三种情况: ◆*.exe文件 Exe文件最简单,直接通过ExtractIconEx获取文件图标。 ◆简介exe文件,如*.bmp等 如*.bmp文件虽然不是exe文件,但在注册表中会将*.bmp文件关联到imageviewer.exe,再通过ExtractIconEx获取imageviewer.exe图标作为*.bmp文件图标。 ◆WCE系统SHELL中的图标 如*.dll文件,在注册表中关联的并不是exe文件,那么这样情况,是由ceshell.dll中的图标来作为*.dll的文件图标。
- Windows CE如何根据文件名获取其对应文件图标icon
- Windows CE如何根据文件名获取其对应文件图标icon
- 根据文件名或文件扩展名获取文件的默认图标
- 根据文件名或文件扩展名获取文件的默认图标
- 获取文件图标,返回Icon
- 根据文件句柄,获取文件名
- 根据文件句柄,获取文件名
- 根据文件名获取文件id
- 获取指定文件的图标,返回Icon
- 用 Icon.ExtractAssociatedIcon 函数获取文件图标
- 获取.exe/.dll/.icon文件的Icon图标资源
- How to get the file's icon using C++ - 用C++如何获取文件的图标
- c#怎样根据文件名获取其所在的绝对路径
- 根据文件句柄,获取文件名(转载)
- C++根据文件路径获取文件名
- 获取ICON图标
- 根据可执行文件名,获得这个文件的图标
- C++根据扩展名获取文件图标、类型
- Flash存储原理简单介绍
- sigprocmask和sigsuspend转
- ERP中该剖析的东西
- CTreeCtrl手动发送选中消息、选中与取消选中
- Google Megastore分布式存储技术全揭秘
- Windows CE如何根据文件名获取其对应文件图标icon
- java code
- PHP学习笔记--字符串操作
- 十六进制颜色表(转)
- XP下Virtualbox 虚拟Linux 共享文件夹设置
- ie全屏js代码
- 采用递归实现九九乘法表
- lilo引导管理器配置
- 域名whois查询接口代码