日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > windows >内容正文

windows

Windows CE如何根据文件名获取其对应文件图标icon

發布時間:2023/12/31 windows 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Windows CE如何根据文件名获取其对应文件图标icon 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Windows CE如何根據文件名獲取其對應文件圖標icon

1、背景介紹

如果把一文件copyWindows CE5.0系統的U盤(或者桌面等目錄)中,那么這個文件就會有其對應的圖標顯示,如下圖。那么Windows CE5.0文件系統是如何管理文件和其對應圖標的呢?

2、文件圖標簡介

WCE5.0系統中,你能看到的圖標都有其對應的圖標資源,問題就在于這些圖標在哪里,而WCE系統又是如何管理的呢?說到底,文件圖標資源存在于兩種形式——exe文件和dll文件中。

EXE文件圖標

每個exe文件都有其對應的文件圖標,可以通過函數ExtractIconEx來獲取exe文件中圖標。

dll文件中的圖標

許多dll中都包含有圖標資源,可以通過ExtractIconExLoadImage來獲取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.dllID4608的圖標。

?

?

3-2

?

3-3

?

3-4

4、總結

?????? WCE文件系統根據文件名,通過注冊表管理其對應的文件圖標??偨Y有三種情況:

*.exe文件

Exe文件最簡單,直接通過ExtractIconEx獲取文件圖標。

簡介exe文件,如*.bmp

*.bmp文件雖然不是exe文件,但在注冊表中會將*.bmp文件關聯到imageviewer.exe,再通過ExtractIconEx獲取imageviewer.exe圖標作為*.bmp文件圖標。

WCE系統SHELL中的圖標

*.dll文件,在注冊表中關聯的并不是exe文件,那么這樣情況,是由ceshell.dll中的圖標來作為*.dll的文件圖標。

?

?

總結

以上是生活随笔為你收集整理的Windows CE如何根据文件名获取其对应文件图标icon的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。