一、using System.Runtime.InteropServices;
二、[DllImport("Shell32.dll")]
public static extern int ExtractIcon(IntPtr hInst, string strFileName, int nIconIndex);
[DllImport("Shell32.dll")]
public static extern int SHGetFileInfo(string pszPath, uint dwFileAttributes, ref Fileinfos psfi, uint cbFileInfo, uint uFlags);
public struct Fileinfos
{
public IntPtr hIcon;
public int iIcon;
public uint dwAttributes;
public char szDisplayName;
public char szTypeName;
}
/// <summary>
/// 设置图标,把得到的图标放入一个ImageList
/// </summary>
/// <param name="imageList">ImageList,可以new一个</param>
/// <param name="FileName">应用程序的路径</param>
/// <param name="pic">图片控件名</param>
/// <param name="tf">不了解</param>
private void SetIcon(ImageList imageList, string FileName,System.Windows.Forms.PictureBox pic, bool tf)
{
Fileinfos fi = new Fileinfos();
if (tf == true)
{
int iTotal = (int)SHGetFileInfo(FileName, 0, ref fi, 100, 16640);
try
{
if (iTotal > 0)
{
Icon ic = Icon.FromHandle(fi.hIcon);
imageList.Images.Add(ic);//添加到ImageList,可放图标和图片,只做一个转换用
pic.Image=imageList.Images[0];//把图标取出来
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error);
}
}
else
{
int iTotal = (int)SHGetFileInfo(FileName, 0, ref fi, 100, 257);
try
{
if (iTotal > 0)
{
Icon ic = Icon.FromHandle(fi.hIcon);
imageList.Images.Add(ic);//添加到ImageList,可放图标和图片,只做一个转换用
pictureBox1.Image = imageList.Images[0];//把图标取出来
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error);
}
}
}
/// <summary>
/// 设置图标,这里是当前窗体
/// </summary>
/// <param name="FileName">应用程序的路径</param>
/// <param name="tf">不知道什么意思</param>
private void SetFormIcon(string FileName, bool tf)
{
Fileinfos fi = new Fileinfos();
if (tf == true)
{
int iTotal = (int)SHGetFileInfo(FileName, 0, ref fi, 100, 16640);
try
{
if (iTotal > 0)
{
Icon ic = Icon.FromHandle(fi.hIcon);
this.Icon = ic;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error);
}
}
else
{
int iTotal = (int)SHGetFileInfo(FileName, 0, ref fi, 100, 257);
try
{
if (iTotal > 0)
{
Icon ic = Icon.FromHandle(fi.hIcon);
this.Icon = ic;
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error);
}
}
}