2009-06-04 6 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); 

私は私はアイコンのアイコンインデックスに送ります私は次の例外を得る(71,73,127、等)インデックスでアイコンを取得しようとすると、開くフォルダアイコン(インデックス5)とLogInアイコン(インデックス45)などのicponsのためにうまくいく、 : アイコンに渡されたWin32ハンドルが有効でないか間違ったタイプです

これがなぜ起こったのか誰もが知っていたのでしょうか?なぜアイコンのいくつかはアクセス可能であり、他のアイコンは表示されないことがあります。

おかげ

+0

ところで、あなたのタイトルは長すぎました。私はそれをもっと短くしました。 – OregonGhost

答えて

1

アイコンの一部がアクセス可能で、他の人がいないように見える理由。

アイコンは、Shell32.dllの公約の一部ではないためです。

とにかくShell32.dllからアイコンを読み込むことに頼るべきではありません。レイモンド・チェンは理由を説明しますが、私は記事を見つけることができません。

+1

http://blogs.msdn.com/oldnewthing/archive/2005/10/26/485133.aspx - プログラムでシステムが変更されないと想定される場合、エピソード1ですか? –

+0

はい、これは少なくとも1つの記事です。私は彼がこれについていくつかを書いたと思う;) – OregonGhost

+0

ありがとう、ありがとう – ThePower

関連する問題