西西軟件園多重安全檢測下載網(wǎng)站、值得信賴的軟件下載站!
軟件
軟件
文章
搜索

首頁編程開發(fā)其它知識 → 怎么用 IconHandler 2.0 獲取文件圖標(biāo)

怎么用 IconHandler 2.0 獲取文件圖標(biāo)

相關(guān)軟件相關(guān)文章發(fā)表評論 來源:本站整理時間:2010/9/27 0:39:22字體大。A-A+

作者:佚名點擊:244次評論:0次標(biāo)簽: 圖標(biāo)

  • 類型:圖片素材大小:14.2M語言:中文 評分:10.0
  • 標(biāo)簽:
立即下載

在 Windows 資源管理器中,我們可以使用圖標(biāo)方式來查看文件,圖標(biāo)可以讓我們快速判斷文件的類型,如下圖中所選中的文件,相信大家一眼就能看出是一個 Word 文檔。

icon1

設(shè)計美觀的圖標(biāo)讓我們賞心悅目,如果可以把這些小圖標(biāo)直接用在我們寫的程序中,一定會增色不少。

但 .Net 并沒有直接提供給我們一個可以直接獲取文件圖標(biāo)的辦法,如果使用搜索引擎查找解決辦法的話,你會找到很多解決辦法,但大多是以零散的代碼提供的,質(zhì)量和來源都沒有保證。

我找到一位國外大牛寫的 IconHandler,分享給大家!

IconHandler

IconHandler 是由 MVolo 分享的一個類庫,目前為 2.0 版本,網(wǎng)址為:

http://mvolo.com/blogs/serverside/archive/2008/04/27/IconHandler-2.0-File-icons-in-ASP.NET-applications.aspx

下載后打開壓縮包里面如下包含兩個 dll 文件:

IconHandler2

第一個文件 ShellIcons.dll 用于從系統(tǒng)中獲取圖標(biāo)。第二個文件 ShellIconHandler.dll 用于在 ASP.NET 顯示圖標(biāo)。先看第一個文件。

ShellIcons.dll

 獲取圖標(biāo)我們只需要調(diào)用 ShellIcons.GetIconForFile 靜態(tài)方法,這個方法有三個參數(shù):

publicclass ShellIcons{    
publicstatic IconContainer GetIconForFile(string path, bool useExtension, bool largeIcon);
}

先來看兩段代碼,這三個參數(shù)的含義就自然明白了:

//WinForm:獲取 rar 文件的大圖標(biāo)并顯示在 pictureBox1 上
using (var container = ShellIcons.GetIconForFile(".rar", true, true))
{
Icon rarFileLargeIcon = container.Icon;
Bitmap rarFileLargeBmp = rarFileLargeIcon.ToBitmap();
pictureBox1.Image = rarFileLargeBmp;}//WinForm:WinForm:獲取 Fiddler.exe 的小圖標(biāo)并顯示在 pictureBox2 上
using (var container = ShellIcons.GetIconForFile(@"C:\Program Files\Fiddler2\Fiddler.exe", false, false)){
pictureBox2.Image = container.Icon.ToBitmap();
}

顯示如下:

ShellIcons 

ShellIconHandler.dll

這個 dll 用在 ASP.NET 中顯示圖片,我們先看作者文件中的一張圖片:

IconHandler-PPTPreview

這個調(diào)用酷吧,使用也比較簡單,首先引用上面這兩個 dll 文件,然后修改 web.config 文件(加入帶下劃線的部分):

<configuration><!-- ShellIconHandler configuration section declaration --><configSections><sectionname="iconHandler"type="Mvolo.ShellIcons.Web.ShellIconHandlerConfigurationSection"/></configSections><system.webServer><!-- Add IconHandler for IIS 7.0 Integrated mode --><handlers><addname="iconhandler"path="geticon.axd"verb="GET"type="Mvolo.ShellIcons.Web.ShellIconHandler"/></handlers><validationvalidateIntegratedModeConfiguration="false"/></system.webServer><system.web><!-- Add IconHandler for IIS 6.0 / IIS 7.0 Classic mode --><httpHandlers><addpath="geticon.axd"verb="GET"type="Mvolo.ShellIcons.Web.ShellIconHandler"/></httpHandlers></system.web><!--    Icon Handler by Mike Volodarsky    Retrieves the shell icon for the specified file name.    --><iconHandlerenabled="true"alwaysUseExtension="true"enableClientCaching="true"enableServerCaching="true" /></configuration>

OK 了,我們在首頁顯示幾個圖標(biāo)試試:

<imgsrc="geticon.axd?file=.docx&size=small"alt=".docx"/><imgsrc="geticon.axd?file=.xlsx&size=small"alt=".xlsx"/><imgsrc="geticon.axd?file=.pptx&size=small"alt=".pptx"/><br/><imgsrc="geticon.axd?file=.docx"alt=".docx"/><imgsrc="geticon.axd?file=.xlsx"alt=".xlsx"/><imgsrc="geticon.axd?file=.pptx"alt=".pptx"/>

顯示如下:

IconHandler-view

效果不錯吧! (還可以在配置文件中,通過 iconHandler 節(jié)的選項來指定是否進(jìn)行緩存。)

寫到這里,也許有的朋友會問,網(wǎng)站通常部署在服務(wù)器上,如果服務(wù)器上沒有安裝 Office 這些圖標(biāo)能正確顯示嗎?很不幸,不能顯示,IconHandler 通過 shell API SHGetFileInfo 來獲取圖標(biāo),如果文件類型沒有在系統(tǒng)中注冊的話,是獲取不到的。但慶幸的是 MVolo 考慮到了這個問題,并給我們供了一個解決辦法:

在 Web 項目中新建立一個名為 /App_Resources/Icons 的文件夾中,將圖片以下面的方式放入:

app_resources_icons

還要再修改下 iconHandler 配置節(jié)(加入帶下劃線的部分):

<configuration><iconHandlerenabled="true"alwaysUseExtension="true"enableClientCaching="true"enableServerCaching="true"useSavedIcons="true"/></configuration>

我們再測試一下,在首頁中加入以下代碼:

<imgsrc="geticon.axd?file=.hctx&size=small"alt=".hctx"/><imgsrc="geticon.axd?file=.hctx"alt=".hctx"/><br/>

預(yù)覽如下:

IconHandler-view2

解決了,但實際文件類型可能有好幾百甚至上千種,一個個來太麻煩,幸好 MVolo 也為我們提供了另外一個工具。

IconGen.exe

使用這個工具我們可以批量生成文件對應(yīng)的大小圖標(biāo),這是一個控件臺應(yīng)用程序,只需要執(zhí)行以下兩個命令:

> IconGen.exe c:\Icons large> IconGen.exe c:\Icons small

分別生成大小圖標(biāo),如下:

IconGen

大大小小一共生成了 2038 個圖標(biāo)!

    相關(guān)評論

    閱讀本文后您有什么感想? 已有人給出評價!

    • 8 喜歡喜歡
    • 3 頂
    • 1 難過難過
    • 5 囧
    • 3 圍觀圍觀
    • 2 無聊無聊

    熱門評論

    最新評論

    發(fā)表評論 查看所有評論(0)

    昵稱:
    表情: 高興 可 汗 我不要 害羞 好 下下下 送花 屎 親親
    字?jǐn)?shù): 0/500 (您的評論需要經(jīng)過審核才能顯示)