猿问

请问.net如何获取其他exe程序的icon图标资源?

请问.net如何获取其他exe程序的icon图标资源?

慕尼黑5688855
浏览 286回答 1
1回答

慕尼黑8549860

 [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;        };        class Win32        {            public const uint SHGFI_ICON = 0x100;            public const uint SHGFI_LARGEICON = 0x0; // 'Large icon            public const uint SHGFI_SMALLICON = 0x1; // 'Small icon            [DllImport("shell32.dll")]            public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags);            [DllImport("shell32.dll")]            public static extern uint ExtractIconEx(string lpszFile, int nIconIndex, int[] phiconLarge, int[] phiconSmall, uint nIcons);        }        private void button1_Click(object sender, EventArgs e)        {            openFileDialog1.ShowDialog();            SHFILEINFO shinfo = new SHFILEINFO();            Win32.SHGetFileInfo(openFileDialog1.FileName, 0, ref shinfo, (uint)Marshal.SizeOf(shinfo), Win32.SHGFI_ICON | Win32.SHGFI_SMALLICON);            Icon myIcon = Icon.FromHandle(shinfo.hIcon);            FileStream fileStream = new FileStream("E:\\1.ico", FileMode.Create);            myIcon.Save(fileStream);            fileStream.Close();        } 
随时随地看视频慕课网APP
我要回答