【C#】WindowsAPICodePack-Shell使用教程

简介: 原文:【C#】WindowsAPICodePack-Shell使用教程 1.首先在项目中添加WindowsAPICodePack的Nuget包。
原文: 【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对象,调用对象的Thumbnail属性可以获得图标。

4.获取文件/文件夹的属性信息

4.1获取指定的属性信息

ShellPropertyCollection props = new ShellPropertyCollection(path);
            typeName = props.Where(prop => prop.CanonicalName == "System.IsFolder").First().FormatForDisplay(PropertyDescriptionFormatOptions.None);
以上,代码可以获得一个值用来判断给定的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地址:https://github.com/aybe/Windows-API-Code-Pack-1.1   

其中source/Samples里有各种各样的Demo,大家可以参考。


目录
打赏
0
0
0
0
216
分享
相关文章
【Shell 命令集合 网络通讯 】Linux 设置和配置PPP pppsetup命令 使用教程
【Shell 命令集合 网络通讯 】Linux 设置和配置PPP pppsetup命令 使用教程
254 0
|
1月前
|
【linux】Shell脚本中basename和dirname的详细用法教程
本文详细介绍了Linux Shell脚本中 `basename`和 `dirname`命令的用法,包括去除路径信息、去除后缀、批量处理文件名和路径等。同时,通过文件备份和日志文件分离的实践应用,展示了这两个命令在实际脚本中的应用场景。希望本文能帮助您更好地理解和应用 `basename`和 `dirname`命令,提高Shell脚本编写的效率和灵活性。
107 32
一个包含了 50+ C#/.NET编程技巧实战练习教程
一个包含了 50+ C#/.NET编程技巧实战练习教程
161 18
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
精选10款C#/.NET开发必备类库(含使用教程),工作效率提升利器!
113 12
C#/.NET/.NET Core开发实战教程集合
C#/.NET/.NET Core开发实战教程集合
106 1
Shell 教程
10月更文挑战第1天
42 4
|
9月前
|
蓝易云 - 简单shell脚本的编写教程
以上就是编写一个基本Shell脚本的步骤。当然,Shell脚本可以做的远不止这些,你可以使用变量,控制结构(如if语句和循环),以及各种Shell命令和功能来编写更复杂的脚本。
78 1
Shell 脚本编程保姆级教程(下)
Shell 脚本编程保姆级教程(下)
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等