WPF 多线程处理(5)

项目的目录:

WPF 多线程处理(5)

以下是FileStroage的三个类:
分别是FileHelper,FileInfos,Win32

WPF 多线程处理(5)WPF 多线程处理(5)
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

WPF 多线程处理(5)WPF 多线程处理(5)
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

WPF 多线程处理(5)WPF 多线程处理(5)
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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • Java(13)方法参数

    首先回顾一下在程序设计语言中关于如何将参数传递给方法的一些专业术语。 按值调用表示方法接收的…

    Java 2023年6月9日
    064
  • Mysql必知必会总结

    Mysql必知必会总结 基础概念 sql(Structured query language)结构化查询语言 不区分大小写,对所有SQL关键字使用大写,而对所有列和表名使用小写便于…

    Java 2023年6月9日
    084
  • Java UUID的底层原理

    UUID的几个核心特定: 全局时空唯一性固定长度128比特,也就是16字节(1 byte = 8 bit)分配速率极高,单机每秒可以生成超过1000万个UUID(实际上更高) UU…

    Java 2023年5月29日
    090
  • MyBatis的注解实现复杂映射开发

    xml 配置方式实现复杂映射回顾 ​ 实现复杂映射我们之前可以在映射文件中通过配置来实现,使用注解开发后,我们可以通过 @Results 注解, @Result 注解, @One …

    Java 2023年6月5日
    086
  • 1950. Maximum of Minimum Values in All Subarrays

    题目: You are given an integer array nums of size n. You are asked to solve n queries for ea…

    Java 2023年5月29日
    074
  • SpringWeb 拦截器

    前言 spring拦截器能帮我们实现验证是否登陆、验签校验请求是否合法、预先设置数据等功能,那么该如何设置拦截器以及它的原理如何呢,下面将进行简单的介绍 1.设置 HandlerI…

    Java 2023年6月9日
    0100
  • Java代码中System.currentTimeMillis()方法具有什么功能呢?

    转自:http://java265.com/JavaCourse/202111/1749.html 下文笔者讲述System.currentTimeMillis()方法的具体功能,…

    Java 2023年6月15日
    0101
  • Java SE 6、super关键字,包

    建议:我们需要使用到哪个类,就导入哪个类即可,不建议使用 导入 ​ import java.util.Scanner; //表示只会引入java.util 包下的 Scanner …

    Java 2023年6月7日
    089
  • JVM内存区域与内存溢出异常(1)

    运行时数据区域 Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据 区域。这些区域都有各自的用途,以及创建和销毁的时间,有的区域随着虚拟机进程的 启动…

    Java 2023年6月13日
    071
  • Spring 拦截器

    拦截器(Interceptor)是一种动态拦截方法调用的机制,在SpringMVC中动态拦截控制器方法的执行 作用: 在指定的方法调用前后执行预先设定的代码 阻止原始方法的执行 总…

    Java 2023年6月7日
    077
  • MCU软件最佳实践——使用printf打印数据

    在mcu上开发应用时,使用串口打印调试信息是最常用的调试手段之一。printf是c标准库提供的函数,可以方便输出格式化的信息。但针对不同的mcu芯片,printf函数要能正常工作,…

    Java 2023年6月6日
    0125
  • 立个flag

    每天刷1道以上算法题! posted @2022-09-13 20:51 pzistart 阅读(8 ) 评论() 编辑 Original: https://www.cnblogs…

    Java 2023年6月15日
    0100
  • Spring原型bean-prototype不能销毁? 转载

    一个原型bean的例子: 结果是 注解的@PreDestroy的方法close()没有执行,而如果是单例bean 的singleton则会执行 那若想销毁Spring的原型bean…

    Java 2023年5月30日
    0107
  • React native replaceAll 不起作用????

    what a fuck ??? replaceAll not working 在React native debug 调试过程中,replaceAll 正常,符合预期,但是Rele…

    Java 2023年5月30日
    079
  • java中为什么只存在值传递(以传入自定义引用类型为例)

    java中只有值传递 为什么这么说?两个例子: public class Student { int sage = 20; String sname = "云胡不归&qu…

    Java 2023年6月13日
    079
  • 爬楼梯_70_746

    题目描述: 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。 每次你可以爬 1 或 2 个台阶。你有多少种不同的方法可以爬到楼顶呢? 题目描述: 一只青蛙一次可以跳上1级台阶,也可以…

    Java 2023年6月5日
    0120
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球