关闭

【C#】WindowsAPICodePack-Shell使用教程

标签: C#shell
961人阅读 评论(0) 收藏 举报
分类:

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
查看评论

C# Windows-API-Code-Pack for .Net

官方源代码以及API文档的Git地址:https://github.com/aybe/Windows-API-Code-Pack-1.1 以Windows API Code Pack-Core引用为例: Install-Package WindowsAPICodePack-Core Windowxs...
  • u011127019
  • u011127019
  • 2016-10-01 18:29
  • 1543

C# Windows-API-Code-Pack文件选择对话框实例

一、新建Wpf项目,需要添加引用 Install-Package WindowsAPICodePack-Core Install-Package WindowsAPICodePack-Shell 二、选择文件对话框实例CommonOpenFileDialog 选择媒体文件 //指定视频文件夹选择视...
  • u011127019
  • u011127019
  • 2016-10-01 19:04
  • 1263

Microsoft.WindowsAPICodePack

  • 2010-03-28 15:20
  • 6.76MB
  • 下载

WPF 选择文件和文件夹对话框。

C# WPF 选择文件和选择文件夹对话框,WPF可以直接使用OpenFileDialog来打开文件,但不可以直接使用FolderBrowserDialog来打开文件夹,但可以使用System.Windows.Forms的FolderBrowserDialog来打开文件夹。
  • zhumingyan
  • zhumingyan
  • 2016-04-09 15:03
  • 12965

[WPF] 文件路径选择控件

1、创建一个WPF的自定义控件,SelectPathControl。 2、修改Style <ResourceDictionary xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ...
  • wushang923
  • wushang923
  • 2013-07-02 17:19
  • 5791

【C#】WindowsAPICodePack-Shell使用教程

1.首先在项目中添加WindowsAPICodePack的Nuget包。 点击安装即可。 2.获取《我的电脑》的名字和电脑图标 ShellObject so = ShellFileSystemFolder.FromParsingName(KnownFolders.Computer.Par...
  • catshitone
  • catshitone
  • 2017-05-25 11:39
  • 961

WindowsAPICodePack.zip

  • 2010-02-03 08:24
  • 6.76MB
  • 下载

ADO,ADODB,ADODC

学生管理系统敲完以后,发现自己对模块中ADODB理解有些混乱。查阅一些相关资料后,简单总结一下。         1   ADO(ActiveX Data Object),数据库访问组件,可在编码器vb,vc,c++中使用,可在代码中...
  • u012788601
  • u012788601
  • 2014-08-02 10:58
  • 1296

C#里面线程的使用方法

操作系统里面经常会用到线程,现在举个窗口弹球的例子讲解一下c#使用线程的方法; 我使用vs2013建了一个windows窗体应用程序,里面的form和类如图所示, Ball是一个类,里面定义了小球的大小,颜色,动作方向,运动速度等变量,还有move(移动)和draw(画球)两个互斥动...
  • kiss__soul
  • kiss__soul
  • 2018-01-29 17:50
  • 10

[C#] Direct2D 学习笔记 (一)

写在前面:最近要做一个有关于地图的项目[C#],开始选择 GDI+ 作图,不知是算法问题还是 GDI+ 本身问题,加载非常慢而且拖动各种闪烁。迫于无奈最终放弃了 GDI+ 方式而尝试 Direct2D。但是让我意外的是网上有关 Direct2D 的教程很少,而且为数不多的教程中大多数是用 C++写的...
  • WangQingtian__Shu
  • WangQingtian__Shu
  • 2015-05-20 14:45
  • 3405
    个人资料
    • 访问:206175次
    • 积分:2788
    • 等级:
    • 排名:第14688名
    • 原创:90篇
    • 转载:18篇
    • 译文:1篇
    • 评论:36条
    文章分类
    最新评论