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,大家可以参考。

【C#】WindowsAPICodePack-Shell使用教程相关推荐

  1. 学习笔记之Linux Shell脚本教程:30分钟玩转Shell脚本编程

    Linux Shell脚本教程:30分钟玩转Shell脚本编程 http://c.biancheng.net/cpp/shell/ 转载于:https://www.cnblogs.com/pegasu ...

  2. linux中的shell有printf吗,Linux Shell系列教程之(八)Shell printf命令详解

    在上一篇:Linux Shell系列教程之(七)Shell输出这篇文章中,已经对Shell printf命令有了一个简略的介绍,本篇给大家详细介绍下Shell中的printf命令. 一.Shell p ...

  3. linux使用shell函数扩充命令,Linux Shell系列教程之(十五) Shell函数简介 | Linux大学...

    摘要 函数可以将一个复杂功能划分成若干模块,从而使程序结构更加清晰,代码重复利用率更高. 高级语言都支持函数,Shell也不例外.今天就为大家介绍下Shell中函数相关用法. 函数可以将一个复杂功能划 ...

  4. Xamarin.Forms Shell基础教程(1)

    Xamarin.Forms Shell基础教程(1) 什么是Xamarin.Forms Shell Shell是Visual Studio为Xamarin Forms提供的解决方案模版.本质上,She ...

  5. fish shell 简要教程以及对bash的兼容性讨论。

    本文的亮点在于两点:1. 提出了一种fish与bash兼容性的临时方案,2. 自己新建了一个属于自己的fish主题. fish的官网宣传语是 Finally, a command line shell ...

  6. 一个不错的shell 脚本教程 入门级

    一个不错的shell 脚本教程 入门级 投稿:mdxy-dxy 字体:[增加 减小] 类型:转载 时间:2011-10-11 我要评论 一个很不错的bash脚本编写教程,至少没接触过BASH的也能看懂 ...

  7. linux用while循环输出1到10,Linux Shell系列教程之(十一)Shell while循环 | Linux大学...

    摘要 在上一篇Linux Shell系列教程之(十)Shell for循环中,我们已经对Shell 循环语句的for循环进行了介绍,本篇给大家介绍下Shell 中另一种循环语句:Shell while ...

  8. Linux Shell脚本入门教程系列之(十四) Shell Select教程

    本文是Linux Shell脚本系列教程的第(十四)篇,更多Linux Shell教程请看:Linux Shell脚本系列教程 在上一篇文章:Linux Shell系列教程之(十三)Shell分支语句 ...

  9. overflow鼠标拖拽显示_[翻译] 从零开始的 .Net Shell 扩展教程 (四) - Shell 拖拽处理程序

    Vukr:[翻译] 从零开始的 .Net Shell 扩展教程 (三) - Shell 提示处理程序​zhuanlan.zhihu.com 使用 .Net 快速创建 Shell 拖拽处理程序 介绍 S ...

  10. shell 经典教程[大神之路]

    shell 经典教程[大神之路] 文章原作者链接:http://bbs.chinaunix.net/forum.php?mod=viewthread&tid=218853&page=2 ...

最新文章

  1. NLP语义标注模型数据准备及实战
  2. 最近学了个elarning,结尾非要让写问卷,写了一下,发出来共勉
  3. 如何通过AppDomain用特定的安全上下文加载外部程序集
  4. android simples 结构,android – 如何在simple_list_item_2中构造和显示信息?
  5. python中如何删除字典中的元素_python中字典删除元素
  6. YUY2(YUV) 与 RGB 格式图片的相互转换 以及 基于YUY2(YUV)的blending
  7. Leetcode18.四数之和
  8. 如何搭建MySQL数据库,常用的数据库命令
  9. 系统学习NLP(十二)--文本表示综述
  10. springbootredis连接池配置优化_spring boot rest 接口集成 spring security(2) – JWT配置
  11. 拓端tecdat|R语言中的广义线性模型(GLM)和广义相加模型(GAM):多元(平滑)回归分析保险资金投资组合信用风险敞口
  12. 对应版本_DNF:韩服新增天域之母等13件特殊史诗,老版本装备全部直升100级
  13. xposed框架_免root用Xposed框架!安卓用户一定要学会
  14. youtube python 中文_GitHub - dousirui001/youtube-streaming-translator-python: 实时翻译油管直播,开发中...
  15. python模拟微信登录公众号_PYTHON 微信公众平台模拟登陆
  16. thinkpad x200 bios 超级密码破解方法
  17. CSS基础常识问答(四)
  18. 拜师——python基础入门—第3大节课—列表,排序,revered逆序,max,min,sum——day15
  19. 工作之路---记录LZ如何在两年半的时间内升为PM
  20. 数据结构队列之企业级应用--优先队列

热门文章

  1. 长虹电视刷鸿蒙系统,教程:小米盒子如何连接长虹老电视看直播?
  2. html如何制作小圆点,纯CSS实现小圆点和三角形图案
  3. Quicker |无法调用chrome浏览器
  4. 从未体验过的船新版本
  5. 2019写给对象的话_写给对象的一段话暖心
  6. 混凝土搅拌站设备远程监控系统解决方案
  7. 根据qq号获取qq头像
  8. IOS开发之国际化(中英语言版本设置)
  9. MNIST机器学习入门(一)
  10. className 与 classList 的区别 / setAttribute和add的区别