3

16x16、32x32、256x256などのバージョンのアイコンを含むVista .icoファイルがある場合は、次の操作を行うだけで.NETアイコンとして正常にロードできます。

Icon myIcon = new Icon("C:\\MyIcon.ico");

その後、アイコン内のさまざまなサイズの画像すべてにアクセスできます。ここで詳しく説明されている方法を使用して、256x256VistaPNGにアクセスすることもできます。

ただし、Vista実行可能ファイルからアイコンイメージの完全なセットを取得する方法が見つかりませんでした。残念ながら、これを行う-:

Icon myIcon = Icon.ExtractAssociatedIcon("C:\\MyExe.exe");

...単一の32x32画像のみが抽出されます。実行可能ファイルから画像のセット全体を.NETアイコンとして取得する方法はありますか?できれば、XPでも機能するものをお勧めします。

4

2 に答える 2

3

CodeProjectのこの記事「IconLib」をご覧ください。また、VB.NETのpinvokeを介して「ExtractIconExA」APIを使用してこのバージョンを確認してください。

お役に立てれば。

于 2010-01-31T23:16:39.297 に答える
1

PrivateExtractIconsAPIでこのスニペットを試してください。

[DllImport("User32.dll", CharSet = CharSet.Auto)]
      internal static extern UInt32 PrivateExtractIcons(String lpszFile, int nIconIndex, int cxIcon, int cyIcon, IntPtr[] phicon, IntPtr[] piconid, UInt32 nIcons, UInt32 flags);

IntPtr[] phicon = new IntPtr[] { IntPtr.Zero };
IntPtr[] piconid = new IntPtr[] { IntPtr.Zero };

PrivateExtractIcons(path, 0, cx, cy, phicon, piconid, 1, 0);

if (phicon[0] != IntPtr.Zero)
    return System.Drawing.Icon.FromHandle(phicon[0]);
于 2012-12-20T10:57:31.090 に答える