我定义了一个Icon对象,请问如何从系统中取得文件夹图标好赋值给这个对象?
解决方案 »
- 读取word文档
- remoting中只能在客户端读取服务器端数据 ,却不能进行方法调用
- 数据表的插入
- Dephi转向c#做WinForm开发的优劣
- 设day=31,m_count=7,设计输出语句。输出形式为:there are 217 days。其中,“217”由day和m_count计算得到。
- WinFrom中,FromBorderStyle设置为None时,拉伸窗体大小的问题
- DataTimePicker使用及日期段如何用sql语句插入数据表中
- 关于数据库备份的问题(用c#写的)?
- 老师的意思是否和我一致?
- 用C#怎样生成html文件?
- 还是字符串分隔的正则表达式问题
- datalist 前台.aspx 绑定问题
Icon icon = fsv.getSystemIcon(new File("C:/windows"));
System.Drawing.Icon icon = System.Drawing.Icon.ExtractAssociatedIcon( "文件名" );
try {
shellFolder = sun.awt.shell.ShellFolder.getShellFolder(file);
} catch (FileNotFoundException e1) {
e1.printStackTrace();
}
Icon icon=new ImageIcon(shellFolder.getIcon(true),shellFolder.getFolderType());//获取文件或目录图标
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;
} /// <summary>
/// 返回系统设置的图标
/// </summary>
/// <param name="pszPath">文件路径 如果为"" 返回文件夹的</param>
/// <param name="dwFileAttributes">0</param>
/// <param name="psfi">结构体</param>
/// <param name="cbSizeFileInfo">结构体大小</param>
/// <param name="uFlags">枚举类型</param>
/// <returns>-1失败</returns>
[DllImport("shell32.dll")]
public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbSizeFileInfo, uint uFlags); public enum SHGFI
{
SHGFI_ICON = 0x100,
SHGFI_LARGEICON = 0x0,
SHGFI_USEFILEATTRIBUTES = 0x10
}
/// <summary>
/// 获取文件图标
/// </summary>
/// <param name="p_Path">文件全路径</param>
/// <returns>图标</returns>
public static Icon GetFileIcon(string p_Path)
{
SHFILEINFO _SHFILEINFO = new SHFILEINFO();
IntPtr _IconIntPtr = SHGetFileInfo(p_Path, 0, ref _SHFILEINFO, (uint)Marshal.SizeOf(_SHFILEINFO), (uint)(SHGFI.SHGFI_ICON | SHGFI.SHGFI_LARGEICON | SHGFI.SHGFI_USEFILEATTRIBUTES));
if (_IconIntPtr.Equals(IntPtr.Zero)) return null;
Icon _Icon = System.Drawing.Icon.FromHandle(_SHFILEINFO.hIcon);
return _Icon;
}
/// <summary>
/// 获取文件夹图标
/// </summary>
/// <returns>图标</returns>
public static Icon GetDirectoryIcon()
{
SHFILEINFO _SHFILEINFO = new SHFILEINFO();
IntPtr _IconIntPtr = SHGetFileInfo(@"", 0, ref _SHFILEINFO, (uint)Marshal.SizeOf(_SHFILEINFO), (uint)(SHGFI.SHGFI_ICON | SHGFI.SHGFI_LARGEICON));
if (_IconIntPtr.Equals(IntPtr.Zero)) return null;
Icon _Icon = System.Drawing.Icon.FromHandle(_SHFILEINFO.hIcon);
return _Icon;
}