最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

C#中如何獲取文件圖標

 更新時間:2016年03月29日 11:10:33   作者:提里科留斯  
這篇文章主要介紹了C#中如何獲取文件圖標的相關(guān)資料,需要的朋友可以參考下

 本文給大家介紹如何去獲取一個文件的關(guān)聯(lián)圖標呢?現(xiàn)總結(jié)如下:

  首先明確問題:獲取一個文件的關(guān)聯(lián)圖標或者是某個類型文件的顯示圖標。

  在網(wǎng)上搜了一圈,發(fā)現(xiàn)方法還是比較多的,但是應(yīng)用C#進行獲取的方法不多。我選擇一種用.Net庫的方法。

 使用的類:

    System.Drawing.Icon ,位于System.Drawing 命名空間。

  具體方法:  

    System.Drawing.Icon 類中的靜態(tài)方法:public static Icon ExtractAssociatedIcon(string filePath)

  此方法接收一個文件路徑,返回一個 Icon 類型的對象。此對象既是指定文件的 Icon 圖標對象。

  此 Icon 類提供了 Save 方法,可以將 Icon 文件寫入流中,進而保存至硬盤文件。

  當然要在程序中顯示也是可以的,Icon 類提供了 ToBitmap 方法,可以將 Icon 文件轉(zhuǎn)換為 Bitmap。Bitmap 就可以在 PictureBox 中顯示了。

  如果要根據(jù)后綴名來獲取文件圖標,那要怎么辦呢?我想了一個比較笨的辦法。看代碼~

string fileName = "tmp." + houzhuiming;
    File.Create(fileName).Close();
    Image img = System.Drawing.Icon.ExtractAssociatedIcon(fileName).ToBitmap();
    File.Delete(fileName);

  如此,新建一個指定后綴名的文件,獲取圖標后直接刪除,就能獲得指定文件后綴名的圖標了。嘻嘻~

下面給大家分享一段代碼介紹C#獲取文件關(guān)聯(lián)圖標

using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Drawing;
using Microsoft.Win32;
namespace ifmdp.DeviceManager
{
class SystemIcon
{
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public struct SHFILEINFO
{
public IntPtr hIcon;
public int iIcon;
public uint dwAttributes;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 260)]
public string szDisplayName;
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 80)]
public string szTypeName;
}
[DllImport("Shell32.dll", EntryPoint = "SHGetFileInfo", SetLastError = true, CharSet = CharSet.Auto)]
public static extern IntPtr SHGetFileInfo(string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi, uint cbFileInfo, uint uFlags);
[DllImport("User32.dll", EntryPoint = "DestroyIcon")]
public static extern int DestroyIcon(IntPtr hIcon);
#region API 參數(shù)的常量定義
public enum FileInfoFlags : uint
{
SHGFI_ICON = 0x000000100, // get icon
SHGFI_DISPLAYNAME = 0x000000200, // get display name
SHGFI_TYPENAME = 0x000000400, // get type name
SHGFI_ATTRIBUTES = 0x000000800, // get attributes
SHGFI_ICONLOCATION = 0x000001000, // get icon location
SHGFI_EXETYPE = 0x000002000, // return exe type
SHGFI_SYSICONINDEX = 0x000004000, // get system icon index
SHGFI_LINKOVERLAY = 0x000008000, // put a link overlay on icon
SHGFI_SELECTED = 0x000010000, // show icon in selected state
SHGFI_ATTR_SPECIFIED = 0x000020000, // get only specified attributes
SHGFI_LARGEICON = 0x000000000, // get large icon
SHGFI_SMALLICON = 0x000000001, // get small icon
SHGFI_OPENICON = 0x000000002, // get open icon
SHGFI_SHELLICONSIZE = 0x000000004, // get shell size icon
SHGFI_PIDL = 0x000000008, // pszPath is a pidl
SHGFI_USEFILEATTRIBUTES = 0x000000010, // use passed dwFileAttribute
SHGFI_ADDOVERLAYS = 0x000000020, // apply the appropriate overlays
SHGFI_OVERLAYINDEX = 0x000000040 // Get the index of the overlay
}
public enum FileAttributeFlags : uint
{
FILE_ATTRIBUTE_READONLY = 0x00000001,
FILE_ATTRIBUTE_HIDDEN = 0x00000002,
FILE_ATTRIBUTE_SYSTEM = 0x00000004,
FILE_ATTRIBUTE_DIRECTORY = 0x00000010,
FILE_ATTRIBUTE_ARCHIVE = 0x00000020,
FILE_ATTRIBUTE_DEVICE = 0x00000040,
FILE_ATTRIBUTE_NORMAL = 0x00000080,
FILE_ATTRIBUTE_TEMPORARY = 0x00000100,
FILE_ATTRIBUTE_SPARSE_FILE = 0x00000200,
FILE_ATTRIBUTE_REPARSE_POINT = 0x00000400,
FILE_ATTRIBUTE_COMPRESSED = 0x00000800,
FILE_ATTRIBUTE_OFFLINE = 0x00001000,
FILE_ATTRIBUTE_NOT_CONTENT_INDEXED = 0x00002000,
FILE_ATTRIBUTE_ENCRYPTED = 0x00004000
}
#endregion
/// <summary>
/// 獲取文件類型的關(guān)聯(lián)圖標
/// </summary>
/// <param name="fileName">文件類型的擴展名或文件的絕對路徑</param>
/// <param name="isLargeIcon">是否返回大圖標</param>
/// <returns>獲取到的圖標</returns>
public static Icon GetIcon(string fileName, bool isLargeIcon)
{
SHFILEINFO shfi = new SHFILEINFO();
IntPtr hI;
if (isLargeIcon)
hI = SHGetFileInfo(fileName, 0, ref shfi, (uint)Marshal.SizeOf(shfi), (uint)FileInfoFlags.SHGFI_ICON | (uint)FileInfoFlags.SHGFI_USEFILEATTRIBUTES | (uint)FileInfoFlags.SHGFI_LARGEICON);
else
hI = SHGetFileInfo(fileName, 0, ref shfi, (uint)Marshal.SizeOf(shfi), (uint)FileInfoFlags.SHGFI_ICON | (uint)FileInfoFlags.SHGFI_USEFILEATTRIBUTES | (uint)FileInfoFlags.SHGFI_SMALLICON);
Icon icon = Icon.FromHandle(shfi.hIcon).Clone() as Icon;
DestroyIcon(shfi.hIcon); //釋放資源
return icon;
}
/// <summary> 
/// 獲取文件夾圖標
/// </summary> 
/// <returns>圖標</returns> 
public static Icon GetDirectoryIcon(bool isLargeIcon)
{
SHFILEINFO _SHFILEINFO = new SHFILEINFO();
IntPtr _IconIntPtr;
if (isLargeIcon)
{
_IconIntPtr = SHGetFileInfo(@"", 0, ref _SHFILEINFO, (uint)Marshal.SizeOf(_SHFILEINFO), ((uint)FileInfoFlags.SHGFI_ICON | (uint)FileInfoFlags.SHGFI_LARGEICON));
}
else
{
_IconIntPtr = SHGetFileInfo(@"", 0, ref _SHFILEINFO, (uint)Marshal.SizeOf(_SHFILEINFO), ((uint)FileInfoFlags.SHGFI_ICON | (uint)FileInfoFlags.SHGFI_SMALLICON));
}
if (_IconIntPtr.Equals(IntPtr.Zero)) return null;
Icon _Icon = System.Drawing.Icon.FromHandle(_SHFILEINFO.hIcon);
return _Icon;
}
}
}

相關(guān)文章

  • C#動態(tài)對象(dynamic)詳解(實現(xiàn)方法和屬性的動態(tài))

    C#動態(tài)對象(dynamic)詳解(實現(xiàn)方法和屬性的動態(tài))

    下面小編就為大家?guī)硪黄狢#動態(tài)對象(dynamic)詳解(實現(xiàn)方法和屬性的動態(tài))。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • c# 引用類型構(gòu)造器

    c# 引用類型構(gòu)造器

    引用類型構(gòu)造器,是將類型的實例初始化為良好狀態(tài)的一種特殊方法
    2012-10-10
  • C#讀取視頻的寬度和高度等信息的方法

    C#讀取視頻的寬度和高度等信息的方法

    這篇文章主要介紹了C#讀取視頻的寬度和高度等信息的方法,通過執(zhí)行一條CMD命令來實現(xiàn)讀取視頻寬度和高度的功能,具有不錯的實用價值,需要的朋友可以參考下
    2014-11-11
  • C#中獲取各種文件名的實現(xiàn)方式

    C#中獲取各種文件名的實現(xiàn)方式

    這篇文章主要介紹了C#中獲取各種文件名的實現(xiàn)方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • C# 獲取IP及判斷IP是否在區(qū)間

    C# 獲取IP及判斷IP是否在區(qū)間

    本文主要介紹了C# 獲取IP及判斷IP是否在區(qū)間的方法。具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • C#開發(fā)WinForm之DataGridView開發(fā)詳解

    C#開發(fā)WinForm之DataGridView開發(fā)詳解

    這篇文章主要介紹了C#開發(fā)WinForm之DataGridView開發(fā)詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • c# 單例模式的實現(xiàn)

    c# 單例模式的實現(xiàn)

    這篇文章主要介紹了c# 單例模式的實現(xiàn)方法,幫助大家更好的理解和使用c#,感興趣的朋友可以了解下
    2021-02-02
  • C#拼圖游戲編寫代碼

    C#拼圖游戲編寫代碼

    這篇文章主要為大家詳細介紹了C#拼圖游戲的編寫代碼,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04
  • C#實現(xiàn)六大設(shè)計原則之接口隔離原則

    C#實現(xiàn)六大設(shè)計原則之接口隔離原則

    這篇文章介紹了C#實現(xiàn)六大設(shè)計原則之接口隔離原則的方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-02-02
  • C#怎么給PDF添加背景圖片

    C#怎么給PDF添加背景圖片

    無論是辦公還是日常生活中都經(jīng)常會用到,很多時候,PDF文件的背景色都是白色,看多了難免覺得累,更換PDF的背景不僅可以讓眼睛看起來更舒服,還可以讓PDF文件看上去更美觀。這篇文章我主要寫的是如何使用C# 給PDF文件添加圖片背景
    2016-02-02

最新評論

延长县| 大同市| 额尔古纳市| 隆昌县| 和林格尔县| 南乐县| 精河县| 婺源县| 鞍山市| 北票市| 大丰市| 洪洞县| 鹤岗市| 灌阳县| 遂川县| 黎城县| 宜宾市| 镇原县| 靖远县| 肥乡县| 崇信县| 丰顺县| 长春市| 横山县| 聂拉木县| 双城市| 新兴县| 讷河市| 惠来县| 武鸣县| 商水县| 会理县| 安达市| 都匀市| 阜平县| 五家渠市| 乐业县| 鹤岗市| 胶州市| 新邵县| 扬州市|