如何使用 SHGetFileInfo 函数来获取与 Visual Basic.net 中的文件相关联的图标

注意:这篇文章是由无人工介入的微软自动的机器翻译软件翻译完成。微软很高兴能同时提供给您由人工翻译的和由机器翻译的文章, 以使您能使用您的语言访问所有的知识库文章。然而由机器翻译的文章并不总是完美的。它可能存在词汇,语法或文法的问题,就像是一个外国人在说中文时总是可能犯这样的错误。虽然我们经常升级机器翻译软件以提高翻译质量,但是我们不保证机器翻译的正确度,也不对由于内容的误译或者客户对它的错误使用所引起的任何直接的, 或间接的可能的问题负责。

点击这里察看该文章的英文版: 319340
本文已归档。它按“原样”提供,并且不再更新。
为这篇文章的一个 Microsoft Visual C#.net 版本,请参阅 319350
概要
本分步指南介绍了如何使用 SHGetFileInfo 函数来获取与文件相关联的图标。

back to the top

创建 Windows 窗体应用程序

  1. 启动 Microsoft Visual Studio.net。
  2. 文件 菜单上指向 新建,然后单击 项目
  3. 新建项目 对话框中单击在 项目类型Visual Basic 项目,然后单击 模板 下的 Windows 应用程序
  4. 名称 框中键入 GetIconSample
back to the top

使用 SHGetFileInfo 函数

  1. 下面的代码添加 Form1.vb 文件的开头
    Imports System.Runtime.InteropServices					
  2. 将下面的代码在 Form1 类中添加 INHERITS 语句之后
    Private Structure SHFILEINFO        Public hIcon As IntPtr ' : icon        Public iIcon As Integer ' : icondex        Public dwAttributes As Integer ' : SFGAO_ flags        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=260)> _        Public szDisplayName As String        <MarshalAs(UnmanagedType.ByValTStr, SizeConst:=80)> _        Public szTypeName As StringEnd StructurePrivate Declare Ansi Function SHGetFileInfo Lib "shell32.dll" (ByVal pszPath As String, _ByVal dwFileAttributes As Integer, ByRef psfi As SHFILEINFO, ByVal cbFileInfo As Integer, _ByVal uFlags As Integer) As IntPtrPrivate Const SHGFI_ICON = &H100Private Const SHGFI_SMALLICON = &H1Private Const SHGFI_LARGEICON = &H0         ' Large iconPrivate nIndex = 0					
  3. 列表 控件、 一个 按钮 控件和一个 imageList 控件添加到窗体。默认的名称分别为 ListView1、 Button1,和 ImageList1。
  4. Button1 属性窗口将该按钮的文本设置为 选择文件,然后添加 Button1_click 事件中的下面的代码:
    Dim hImgSmall As IntPtr  'The handle to the system image list.Dim hImgLarge As IntPtr  'The handle to the system image list.Dim fName As String      'The file name to get the icon from.Dim shinfo As SHFILEINFOshinfo = New SHFILEINFO()Dim openFileDialog1 As OpenFileDialogopenFileDialog1 = New OpenFileDialog()openFileDialog1.InitialDirectory = "c:\temp\"openFileDialog1.Filter = "All files (*.*)|*.*"openFileDialog1.FilterIndex = 2openFileDialog1.RestoreDirectory = TruelistView1.SmallImageList = imageList1listView1.LargeImageList = ImageList1shinfo.szDisplayName = New String(Chr(0), 260)shinfo.szTypeName = New String(Chr(0), 80)If (openFileDialog1.ShowDialog() = DialogResult.OK) Then     fName = openFileDialog1.FileName     'Use this to get the small icon.     hImgSmall = SHGetFileInfo(fName, 0, shinfo, Marshal.SizeOf(shinfo), _         SHGFI_ICON Or SHGFI_SMALLICON)     'Use this to get the large icon.     'hImgLarge = SHGetFileInfo(fName, 0,      'ref shinfo, (uint)Marshal.SizeOf(shinfo),      'SHGFI_ICON | SHGFI_LARGEICON);     'The icon is returned in the hIcon member of the shinfo struct.     Dim myIcon As System.Drawing.Icon     myIcon = System.Drawing.Icon.FromHandle(shinfo.hIcon)     imageList1.Images.Add(myIcon) 'Add icon to imageList.     listView1.Items.Add(fName, nIndex) 'Add file name and icon to listview.     nIndex = nIndex + 1End If					
back to the top

运行项目

  1. 编译该项目: 在 生成 菜单上单击 生成解决方案
  2. 按 f5 键运行项目。
  3. 单击 选择文件,然后在 打开 对话框中选择一个文件。ListView 控件中显示的文件,与文件相关联的图标名称。
back to the top
参考
在 Microsoft Visual C#.net 版本的这篇文章中的其他信息请单击下面文章编号,以查看 Microsoft 知识库中相应的文章:
319350如何使用 SHGetFileInfo 函数收件人获取使用 Visual C#.net 中的文件关联的图标
back to the top

属性

文章 ID:319340 - 上次审阅时间:12/07/2015 09:15:47 - 修订版本: 2.0

Microsoft Visual Studio .NET 2002 专业版, Microsoft Visual Studio .NET 2002 企业级结构设计版, Microsoft Visual Studio .NET 2002 企业级开发版, Microsoft Visual Studio .NET 2002 Academic Edition

  • kbnosurvey kbarchive kbmt kbhowtomaster KB319340 KbMtzh
反馈