Shell32.dllからアイコンをロードする:Win32のハンドルが有効ではありませんか、間違ったタイプであります
質問
私はのShell32.dllからいくつかのアイコンを取得しています。アイコンの一部Althought利用可能であることが表示されません、と私は理由を理解することはできません。
私は呼び出すことで、ライブラリをロードすることによって、アイコンを取得しています:
[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、などなど)私は、次の例外を取得: アイコンに渡されたWin32のハンドルが有効ではありませんか、間違ったタイプです。
これが起こった理由を誰もが知っていた場合は、私は思っていましたか?そしてなぜ、アイコンの一部がアクセス可能であり、他はありません表示されます。
おかげ
解決
なぜアイコンの一部がアクセス可能であり、他はありません表示されます。
アイコンがのShell32.dllの公共契約の一部ではないので。
あなたはとにかくのShell32.dllからロードアイコンに頼るべきではありません。レイモンド・チェンは、私は記事を見つけることができませんが、理由を説明する。
所属していません StackOverflow