【C#】WindowsAPICodePack-Shell使⽤教程
原⽂:
1.⾸先在项⽬中添加WindowsAPICodePack的Nuget包。
点击安装即可。
2.获取《我的电脑》的名字和电脑图标
ShellObject so = ShellFileSystemFolder.FromParsingName(KnownFolders.Computer.ParsingName);
displayName = so.Name;
Bitmap bm = so.Thumbnail.SmallBitmap;
bm.MakeTransparent(System.Drawing.Color.Black);
其中,so.Name就是“我的电脑”的名字,注意不是机器名哦,机器名可以直接通过Environment.MachineName获取。
电脑图标可以通过so的Thumbnail获取,可以获得SmallBitmap,Bitmap,LargeBitmap,SmallIco,Ico,LargeIco等。不过由于获取到的Bitmap的背景⾊由之前的透明⾊变成了⿊⾊,可以是因为api的原因,所以需要我们⽤MakeTransparent⼿动转为透明⾊。
获取到的电脑图标如下:
其中,KownFolders这个类功能很丰富,⾥⾯包含系统的⼀些特殊⽂件夹,如“我的⽂档”、“我的⾳乐”、“桌⾯”、“⽹络连接”等,可直接访问。⽐.Net Framework⾥的Environment.SpecialFolders更强⼤。
3.获取⽂件/⽂件夹的图标
获取⽂件夹信息时,可以调⽤ShellFolder.FromParsingName(string FolderPath),它返回⼀个ShellObject对象,通过此对象的Thumbnail属性可以得到图标,
⽅法如第⼆步。
获取⽂件图标时,调⽤ShellFile.FromFilePath(string filePath),返回⼀个ShellFile对象,调⽤对象的T
humbnail属性可以获得图标。
4.获取⽂件/⽂件夹的属性信息
4.1获取指定的属性信息
ShellPropertyCollection props = new ShellPropertyCollection(path);
typeName = props.Where(prop => prop.CanonicalName == "System.IsFolder").First().FormatForDisplay(PropertyDescriptionFormatOptions.None);
writeline教程
以上,代码可以获得⼀个值⽤来判断给定的path是⼀个⽂件夹还是⼀个⽂件。
4.2获取⽂件/⽂件夹所有不为null的属性信息
ShellPropertyCollection cooll = new ShellPropertyCollection(@"c:");
var properties = cooll.Where(prop => prop.CanonicalName != null).OrderBy(prop=>prop.CanonicalName).ToArray();
Array.ForEach(
properties,
p =>
{
DisplayPropertyValue(p);
});
其中,DisplayPropertyValue()⽅法为:
private static void DisplayPropertyValue(IShellProperty prop)
{
string value = string.Empty;
value = prop.ValueAsObject == null ? "" : prop.FormatForDisplay(
PropertyDescriptionFormatOptions.None);
Debug.WriteLine(prop.CanonicalName + "-------" + value);
}
如例⼦所⽰,C:这个⽂件夹的属性信息如图:
(⽂件夹的不同,可展⽰出来的属性信息数量也不同)
如果把C:改为⼀个⽂件的路径,如:C:\1.txt。它的属性信息为(没有完全截出来):
获取某个盘符的名称:
var item=ShellFileSystemFolder.FromFolderPath("c:\\");
Console.WriteLine(string.Format("displayname is {0},name is {1}", item.GetDisplayName(DisplayNameType.Default), item.Name));            Console.Read();
输出:displayname is Local Disk (C:),name is Local Disk (C:)
最后:送给⼤家项⽬的github地址:
其中source/Samples⾥有各种各样的Demo,⼤家可以参考。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。