2009-06-04 84 views
1

我從Shell32.dll中獲取一些圖標。雖然有些圖標似乎不可用,但我不明白爲什麼。從Shell32.dll加載圖標:Win32句柄無效或類型錯誤

我通過加載庫調用獲取圖標:

[DllImport("kernel32.dll")] 
static extern IntPtr LoadLibrary(string Library); 

,然後通過調用獲取圖標:

[DllImport("User32.dll")] 
public static extern IntPtr LoadImage(IntPtr ptr, int intId, uint intType, int iconWidth, int iconHeight, int loadIcon); 

我在我的圖標圖標索引發越來越,這對工作正常,如打開文件夾圖標(索引5)和登錄圖標(索引45)的icpons,但當我嘗試並在索引(71,73,127等等)獲取圖標時,我得到以下異常: 傳遞給Icon的Win32句柄無效或錯誤類型

我想知道是否有人知道爲什麼會發生這種情況?以及爲什麼有些圖標可以訪問,而其他圖標則不可以。

感謝

+0

順便說一句,你的標題太長了。我縮短了。 – OregonGhost 2009-06-04 08:20:07

回答

1

爲什麼有些圖標都可以訪問和其他人似乎沒有。

因爲這些圖標不是Shell32.dll公共合同的一部分。

不管怎樣,您都不應該依賴從Shell32.dll加載圖標。 Raymond Chen解釋了爲什麼,儘管我找不到這篇文章。

+1

http://blogs.msdn.com/oldnewthing/archive/2005/10/26/485133.aspx - 當節目假設系統永遠不會改變,第1集? – 2009-06-04 08:30:21