C#获取软件图标
- using System;
- using System.Collections.Generic;
- using System.Drawing;
- using System.Windows.Forms;
- using System.Runtime.InteropServices;
- using System.IO;
- namespace ShowIcon
- {
- [StructLayout( LayoutKind.Sequential)]
- public struct FileInfomation
- {
- public IntPtr hIcon;
- public int iIcon;
- public int dwAttributes;
- [ MarshalAs( UnmanagedType.ByValTStr, SizeConst = 260 )]
- public string szDisplayName;
- [ MarshalAs( UnmanagedType.ByValTStr, SizeConst = 80 )]
- public string szTypeName;
- }
- /// <summary>
- /// Description of MainForm.
- /// </summary>
- public partial class MainForm
- {
- [STAThread]
- public static void Main(string[] args)
- {
- Application.EnableVisualStyles();
- Application.SetCompatibleTextRenderingDefault(false);
- Application.Run(new MainForm());
- }
- [DllImport("shell32.dll", EntryPoint="SHGetFileInfo")]
- public static extern int GetFileInfo(string pszPath, int dwFileAttributes, ref FileInfomation psfi, int cbFileInfo,int uFlags);
- public MainForm()
- {
- //
- // The InitializeComponent() call is required for Windows Forms designer support.
- //
- InitializeComponent();
- //
- // TODO: Add constructor code after the InitializeComponent() call.
- //
- }
- public static Icon GetSmallIcon(string path)
- {
- FileInfomation _info = new FileInfomation();
- GetFileInfo(path, 0, ref _info, Marshal.SizeOf(_info), (int)(0x000000100| 0x000000001));
- try
- {
- return Icon.FromHandle(_info.hIcon);
- }
- catch
- {
- return null;
- }
- }
- void Button1Click(object sender, System.EventArgs e)
- {
- this.openFileDialog1.ShowDialog();
- }
- void OpenFileDialog1FileOk(object sender, System.ComponentModel.CancelEventArgs e)
- {
- this.textBox1.Text=this.openFileDialog1.FileName;
- this.pictureBox1.Image=GetSmallIcon(this.openFileDialog1.FileName).ToBitmap();
- }
- }
- }