首页 新闻 会员 周边

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

0
[已解决问题] 解决于 2011-04-11 11:43

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

暮光青年的主页 暮光青年 | 初学一级 | 园豆:2
提问于:2011-04-10 13:15
< >
分享
最佳答案
0

 [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();
        } 

DYStudio.Net | 小虾三级 |园豆:1747 | 2011-04-10 15:10
请问要引入哪些名称控件,我是新手,不懂。
暮光青年 | 园豆:2 (初学一级) | 2011-04-10 16:25
代码我直接发给你了,visual studio 2010 打开直接可以用.低版本的话自己复制一下代码吧.一样的.
DYStudio.Net | 园豆:1747 (小虾三级) | 2011-04-10 17:43
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册