0

実行ファイルのアイコンを保存するプログラムを書きました。ExtractAssociatedIcon メソッドで実行ファイルのアイコンを取得して保存すると、出力されるアイコンの品質が低下します。私に何ができる?

var ico = Icon.ExtractAssociatedIcon(@"c:/test.exe");
FileStream stream = new System.IO.FileStream(string.Format("{0}{1}", Path.GetTempPath(), "icon" + counter + ".ico"), System.IO.FileMode.Create);
ico.Save(stream);
stream.Flush();
stream.Close();
4

2 に答える 2

2

それは簡単ではない。SystemImageList を使用する必要があります。.NET フレームワークではサポートされていないため、安全でないメソッドを使用してシステムにアクセスする必要があります。Icon.ExtractAssociatedIcon は 32x32 の解像度のみを返します。

あなたが本当にそれをやりたいなら、これは良いスタートです: http://www.vbaccelerator.com/home/NET/Code/Libraries/Shell_Projects/SysImageList/article.asp

更新: .exe ファイルのみが必要で、Windows XP のサポートが不要な場合は、Windows API コードパックhttp://archive.msdn.microsoft.com/WindowsAPICodePackを使用して、必要なサイズでアイテムのサムネイルを取得することもできます。

于 2013-07-27T14:51:37.707 に答える
-1

このウィキペディアの MSDNを読む必要があります

16x16 または 32x32 が ico の標準サイズです。32x32 の画像が非常に HD であるとは期待できません

シェル アイコン サイズの値を使用すると、32×32 アイコンの代わりに大きなアイコンを使用できます。また、シェルの小さいアイコン サイズの値を使用すると、16×16 アイコンの代わりにカスタム サイズを使用できます。[3] したがって、Windows XP より前でも、1 つのアイコン ファイルに 1 × 1 ピクセルから 256 × 256 ピクセル (非正方形サイズを含む) までの任意のサイズの画像を 16、256、65535、または 1670 万色で格納できました。しかし、シェルは非常に大きなサイズのアイコンを表示できませんでした。

于 2013-07-27T14:07:49.433 に答える