public MainForm() { InitializeComponent(); this.Icon = Win32.GetIcon(); } public class Win32 { [DllImport("shell32.dll", EntryPoint = "ExtractIcon")] public static extern int ExtractIcon(IntPtr hInst, string lpFileName, int nIndex); [DllImport("shell32.dll", EntryPoint = "SHGetFileInfo")] public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttribute, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint Flags); [DllImport("User32.dll", EntryPoint = "DestroyIcon")] public static extern int DestroyIcon(IntPtr hIcon); [StructLayout(LayoutKind.Sequential)] public struct SHFILEINFO { public IntPtr hIcon; public IntPtr iIcon; public uint dwAttributes; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)] public string szDisplayName; [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)] public string szTypeName; }; public static Icon GetIcon() { Icon RetrunIco; Win32.SHFILEINFO shfi = new Win32.SHFILEINFO(); try { FileInfo fi = new FileInfo(Application.ExecutablePath); //获得图标 Win32.SHGetFileInfo(Application.ExecutablePath, (uint)0x80, ref shfi, (uint)System.Runtime.InteropServices.Marshal.SizeOf(shfi), (uint)(0x100 | 0x400)); //取得Icon和TypeName RetrunIco = (Icon)Icon.FromHandle(shfi.hIcon).Clone(); Win32.DestroyIcon(shfi.hIcon); return RetrunIco; //销毁图标 } catch { return null; } } }