zoukankan      html  css  js  c++  java
  • WPF 多线程处理(5)

    项目的目录:

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

    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
    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
    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)

  • 相关阅读:
    索引在什么情况下遵循最左前缀的规则?
    MySQL索引种类
    简述触发器、函数、视图、存储过程?
    6.Class 与 Style 绑定
    2.Javascript 函数(主要)
    Java的string类
    PHP+mysql注入的基本过程
    Android自动化测试Emmagee
    EclEmma的介绍、安装与使用
    软件测试方法
  • 原文地址:https://www.cnblogs.com/fengqingyangNo1/p/3266031.html
Copyright © 2011-2022 走看看