2010-11-11 71 views
0

我嘗試使用下面的API來獲取從該.exe文件的圖標:
SHGetFileInfoW()SHGetImageList(),並從的ImageList這樣得到我通過調用調用getIcon閱讀圖標( )。從可執行文件中獲取圖標信息?

當機器的顏色深度設置爲32位時,我得到32位彩色圖標。問題是當我將機器的顏色深度更改爲24或16位時,我得到一個16位彩色圖標,並且此圖像似乎已損壞。

我還檢查了一些常見的Windows應用程序(記事本,繪畫等)和一些辦公應用程序中的可用圖標列表,沒有16位或24位顏色圖標。

從可執行文件中獲取正確圖標的最佳方法是什麼?

謝謝!

回答

0

您可以使用LoadLibraryEx加載exe文件,然後使用LoadImage提取圖標 - 或 - 如果要直接訪問圖標數據:FindResource,LoadResource,LockResource會爲您提供一個指向圖標資源位的指針。

+0

該exe文件可能有一堆ICON圖像,我如何選擇一個想要的圖標說顏色深度爲32的圖標? – atVelu 2010-11-11 07:46:01

+0

如果您使用的是LoadImage,那麼它將根據您的參數選擇正確的LoadImage。如果您使用的是LoadResource,那麼您需要知道每個圖標文件都對應於一個RT_ICON_GROUP資源,該資源又指向單個RT_ICON資源,每個資源都支持ico文件中的每個設計深度。類似的東西。 – 2010-11-11 15:10:54