C#類似windows資源管理員-擷取檔案表徵圖

來源:互聯網
上載者:User

標籤:blog   http   io   ar   os   sp   檔案   on   div   

在做檔案管理工具的過程中,有一個非常重要的功能實現,就是對不同的檔案類型擷取檔案的描述資訊,以及對檔案表徵圖的擷取

實現這個功能需要調用Windows API,以及對註冊表的操作(代碼是看了一些網上寫的後根據自己的理解寫了一個比較簡潔易懂的代碼)

下面看代碼:

 

//根據副檔名擷取表徵圖  public int fileExtIcon(string typeExt, FileInfo f)  {      if (!extIcon.ContainsKey(typeExt) && typeExt != ".exe")      {          RegistryKey regRead = Registry.ClassesRoot.OpenSubKey(typeExt);          if (regRead == null) { return 0; }          string subKey = regRead.GetValue("").ToString();          RegistryKey regRead1 = Registry.ClassesRoot.OpenSubKey(subKey);          if (regRead1 == null) { return 0; }          RegistryKey subKey1 = regRead1.OpenSubKey("DefaultIcon");          string defaultIcon = subKey1.GetValue("").ToString();          string[] defIcon = defaultIcon.Split(‘,‘);          Icon ic = getExtractIcon(defIcon[0], int.Parse(defIcon[1]));          TreeImageList.Images.Add(ic);          extIcon.Add(typeExt, i++);          return 0;      }      else if (typeExt == ".exe")      {          string fullPath = f.FullName;          Icon ic = getExtractIcon(fullPath,0);          if (ic != null)          {              TreeImageList.Images.Add(ic);              extIcon.Add(typeExt, i++);          }      }      return 0;  }  

 


這裡需要引用windows API

 

 

//擷取系統表徵圖  [DllImport("shell32.dll")]  public static extern int ExtractIcon(IntPtr h, string strx, int ii);  public Icon getExtractIcon(string fileName,int iIndex)  {      try      {          IntPtr hIcon = (IntPtr)ExtractIcon(this.Handle, fileName, iIndex);          if (hIcon != IntPtr.Zero)          {              Icon icon = Icon.FromHandle(hIcon);              return icon;          }      }      catch(Exception e)      {          MessageBox.Show(e.Message,"錯誤提示",0,MessageBoxIcon.Error);      }      return null;  }  

 

 

還有一個問題沒解決,檔案盒檔案夾的表徵圖顯示不清晰,我不知道是不是ListView的原因

請各位指點


有問題或建議請聯絡[email protected]

C#類似windows資源管理員-擷取檔案表徵圖

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.