SHELL32.dll内にシステムアイコンが埋め込まれているので、そちらからアイコンを取り出して表示するサンプルになります。
プロジェクトの作成
.Net SDKのバージョン8
mkdir SystemIconSample cd SystemIconSample dotnet new winforms
ソースコード
ファイル名:IconManager.cs
public class IconManager
{
static public Icon? GetSystemIcom(int no, int size=64)
{
Icon? result = null;
string systemRoot = Environment.GetEnvironmentVariable("SystemRoot") ?? @"C:\Windows";
string dllPath = Path.Join(systemRoot, @"System32\SHELL32.dll");
// dllファイルの有無を確認
if (!File.Exists(dllPath)) return result;
// dllからアイコンを取り出し戻す。
return Icon.ExtractIcon(dllPath, no, size);
}
}
ファイル名:Form1.cs
using System.Diagnostics;
namespace SystemIconSample;
public partial class Form1 : Form
{
PictureBox picbox1 = new()
{
Dock = DockStyle.Fill,
SizeMode = PictureBoxSizeMode.CenterImage,
};
public Form1()
{
InitializeComponent();
Controls.Add(picbox1);
Load += Form1_Load;
}
void Form1_Load(Object? sender, EventArgs e)
{
var icon = IconManager.GetSystemIcom(32, 256);
if (icon is null) return;
picbox1.Image?.Dispose();
picbox1.Image = icon.ToBitmap();
}
}
ソースコードのダウンロード
コメント