using System.Drawing; using System.IO; using System.Runtime.InteropServices; namespace Infrastructure.utils; public static class IconHelper { [DllImport("Shell32.dll", CharSet = CharSet.Auto)] private static extern IntPtr ExtractIcon(IntPtr hInst, string lpszExeFileName, int nIconIndex); /// /// 获取 ICON /// /// /// public static string GetIconBase64(string? exePath) { if (exePath == null && !File.Exists(exePath)) return ""; IntPtr hIcon = ExtractIcon(IntPtr.Zero, exePath, 0); if (hIcon == IntPtr.Zero) return ""; using Icon icon = Icon.FromHandle(hIcon); using Bitmap bmp = icon.ToBitmap(); using MemoryStream ms = new MemoryStream(); // 保存为 PNG 格式 bmp.Save(ms, System.Drawing.Imaging.ImageFormat.Png); byte[] bytes = ms.ToArray(); return Convert.ToBase64String(bytes); } }