WPF文件浏览器实现

基本思路

用系统函数SHGetFileInfo获得文件信息,如图标、大小、更新日期等,放入TreeView控件

SHGetFileInfo如下:

/// <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 System.Drawing.Icon GetSystemInfoIcon(string path)
{
    SHFILEINFO _SHFILEINFO = new SHFILEINFO();
    IntPtr _IconIntPtr = SHGetFileInfo(path, 0, ref _SHFILEINFO, (uint)Marshal.SizeOf(_SHFILEINFO), (uint)(SHGFI.SHGFI_ICON | SHGFI.SHGFI_LARGEICON));
    if (_IconIntPtr.Equals(IntPtr.Zero)) return null;
    System.Drawing.Icon _Icon = System.Drawing.Icon.FromHandle(_SHFILEINFO.hIcon);
    return _Icon;
}

刷新内容

CurrentPath变化触发PropertyChangedCallback

完整代码

HeBianGu.Control.Explorer
File-Explorer

posted @ 2024-01-25 10:25  MangoJuice  阅读(10)  评论(0编辑  收藏  举报