2010-03-17 49 views
3

我有一個簡單的文件瀏覽器,並有我顯示的文件和文件夾,的SHGetFileInfo呼籲目錄古怪

通過(對目錄)

SHFILEINFO info = new SHFILEINFO(); 
SHGetFileInfo(filename, 
FILE_ATTRIBUTE_DIRECTORY, 
ref info,Marshal.SizeOf(info), 
SHGFI_ICON | SHGFI_USEFILEATTRIBUTES | SHGFI_SMALLICON | SHGFI_ADDOVERLAYS); 

它工作100%的罰款所得,但我已經注意到了奇怪 - 如果我嘗試獲取目錄的圖標,但指定FILE_ATTRIBUTE_NORMAL而不是FILE_ATTRIBUTE_DIRECTORY ,但它對目錄確實很奇怪 - 普通文件夾有「未知文件類型的白皮書」圖標,回收站具有VLC圖標等。SVN下的目錄有適當的覆蓋,但基本文件圖標(白紙)。

據我所知,目錄的基本圖標現在是未知文件,但爲什麼有些文件夾有完全奇怪的圖標? Config.MSI有安裝程序圖標,回收站有VLC圖標(wtf ?!)等。shell函數對此參數有什麼作用?它究竟獲得了什麼圖標?

同樣,這不是問題,我只是好奇。

+0

我從來沒有使用過ShGetFileInfo,但它讓我想到了你所得到的圖標可能代表文件夾內的第一個文件。 – Diadistis 2010-03-17 15:27:00

+0

不,事實並非如此,普通文件夾總是有'未知文件'圖標;只是一些特殊的圖標有不同的圖標。 – Axarydax 2010-03-17 15:32:01

回答

1

據我所知圖標資源是通過它們的數字索引來訪問的,所以我的猜測是正確的索引被提取,然後從錯誤的庫或右邊的圖標中提取圖標,但是使用錯誤的偏移量+正確的索引。