0
点赞
收藏
分享

微信扫一扫

获取系统中可用的驱动器列表

芝婵 03-12 15:00 阅读 22


实现:

using System.Runtime.InteropServices;
  
   [StructLayout(LayoutKind.Sequential)]
   public struct SHFILEINFO 
   {
    public IntPtr hIcon; 
    public int iIcon;
    public int dwAttributes; 
    public string szDisplayName; 
    public string szTypeName; 
   }
  
  
  
   [DllImport("shell32")]
   private static extern int SHGetFileInfo(string pszPath,int dwFileAttributes,ref SHFILEINFO psfi,int cbFileInfo,int uFlags);
   
  
 const int SHGFI_ICON = 0x0100;
 const int SHGFI_LARGEICON = 0x0000; 
  
 static string[] drives;
 ImageList img=new ImageList();


 
 
获得列表:

private void Form1_Load(object sender, System.EventArgs e)
   {
    this.listView1.LargeImageList=img;
    this.listView1.SmallImageList=img;
    this.listView1.StateImageList=img;
  
  
    drives=Environment.GetLogicalDrives();   for(int i=0;i<drives.Length;i++)  //枚举驱动器
    {    string str_temp=drives[i];
     this.listView1.Items.Add(str_temp);
     this.listView1.Items[i].ImageIndex=i;   }
  
  
 //获得相应的图标
    for(int i=0;i<drives.Length;i++)
    {
     SHFILEINFO FileInfo=new SHFILEINFO();
     SHGetFileInfo(drives[i],0,ref FileInfo,Marshal.SizeOf(FileInfo),SHGFI_ICON | SHGFI_LARGEICON);
  
     Icon myIcon;
     myIcon=Icon.FromHandle(FileInfo.hIcon);
     img.Images.Add(myIcon);    }
  
    }

举报

相关推荐

0 条评论