[DllImport("Shell32.dll")]
public static extern int ExtractIcon(IntPtr h, string strx, int ii);

[DllImport("Shell32.dll")]
public static extern int SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbFileInfo, uint uFlags);

public struct SHFILEINFO

{
public IntPtr hIcon;
public int iIcon;
public uint dwAttributes;
public char szDisplayName;
public char szTypeName;
}
protected virtual Icon myExtractIcon(string FileName, int iIndex)

{
try

{
IntPtr hIcon = (IntPtr)ExtractIcon(this.Handle, FileName, iIndex);
if (!hIcon.Equals(null))

{
Icon icon = Icon.FromHandle(hIcon);
return icon;
}
}
catch (Exception ex)

{ MessageBox.Show(ex.Message, "错误提示", 0, MessageBoxIcon.Error); }
return null;
}
Icon ic0 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 15);
TreeImageList.Images.Add(ic0);
Icon ic1 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 5);
TreeImageList.Images.Add(ic1);
Icon ic2 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 7);
TreeImageList.Images.Add(ic2);
Icon ic3 = myExtractIcon("%SystemRoot%\\system32\\shell32.dll", 11);
TreeImageList.Images.Add(ic3);
imageList.Images.Add(ic);
本文介绍了一种从DLL文件中提取图标的C#方法,利用Shell32.dll中的API函数实现图标资源的读取,并展示了如何将这些图标添加到ImageList中以供应用程序使用。
876

被折叠的 条评论
为什么被折叠?



