项目的目录:
以下是FileStroage的三个类:
分别是FileHelper,FileInfos,Win32
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
namespace Automatically.FileStroage
{
public class FileHelper
{
public static FileInfos GetFileInfo(string path)
{
var fileInfos = new FileInfos();
FileInfo fi = new FileInfo(path);
fileInfos.Icon = Win32.GetIcon(path, true);
fileInfos.Name = fi.Name;
fileInfos.Path = fi.FullName;
fileInfos.Size = fi.Length;
return fileInfos;
}
}
}
View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Drawing;
namespace Automatically.FileStroage
{
public class FileInfos
{
public Icon Icon { get; set; }
public string Name { get; set; }
public string Path { get; set; }
public long Size { get; set; }
}
}
View Code
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.InteropServices;
using System.Drawing;
namespace Automatically.FileStroage
{
public class Win32
{
[DllImport("Shell32.dll")]
private static extern int SHGetFileInfo
(
string pszPath,
uint dwFileAttributes,
out SHFILEINFO psfi,
uint cbfileInfo,
SHGFI uFlags
);
[StructLayout(LayoutKind.Sequential)]
private struct SHFILEINFO
{
public SHFILEINFO(bool b)
{
hIcon=IntPtr.Zero;iIcon=0;dwAttributes=0;szDisplayName="";szTypeName="";
}
public IntPtr hIcon;
public int iIcon;
public uint dwAttributes;
[MarshalAs(UnmanagedType.LPStr, SizeConst=260)]
public string szDisplayName;
[MarshalAs(UnmanagedType.LPStr, SizeConst=80)]
public string szTypeName;
};
private Win32()
{
}
private enum SHGFI
{
SmallIcon = 0x00000001,
LargeIcon = 0x00000000,
Icon = 0x00000100,
DisplayName = 0x00000200,
Typename = 0x00000400,
SysIconIndex = 0x00004000,
UseFileAttributes = 0x00000010
}
public static Icon GetIcon(string strPath, bool bSmall)
{
SHFILEINFO info = new SHFILEINFO(true);
int cbFileInfo = Marshal.SizeOf(info);
SHGFI flags;
if (bSmall)
flags = SHGFI.Icon|SHGFI.SmallIcon|SHGFI.UseFileAttributes;
else
flags = SHGFI.Icon|SHGFI.LargeIcon|SHGFI.UseFileAttributes;
SHGetFileInfo(strPath, 256, out info,(uint)cbFileInfo, flags);
return Icon.FromHandle(info.hIcon);
}
}
}
View Code
下一篇:WPF 多线程处理(6)
上一篇:WPF 多线程处理(4)
Original: https://www.cnblogs.com/fengqingyangNo1/p/3266031.html
Author: 风清扬 No.1
Title: WPF 多线程处理(5)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/580176/
转载文章受原作者版权保护。转载请注明原作者出处!