Как использовать функцию SHGetFileInfo для получения значков, которые связаны с файлами в Visual Basic.NET

Переводы статьи Переводы статьи
Код статьи: 319340 - Vizualiza?i produsele pentru care se aplic? acest articol.
Для Microsoft Visual C#.NET версии данной статьи, см. 319350.
Развернуть все | Свернуть все

В этой статье

Аннотация

В данной статье описывается использование SHGetFileInfo функция для получения значков, которые связаны с файлами.

Создание приложения Windows Forms

  1. Запустите Microsoft Visual Studio.NET.
  2. На Файл Выберите пункт Новый, а затем нажмите кнопку Проект.
  3. В Новый проект диалоговое окно, нажмите кнопку Проекты Visual Basic Из списка Типы проектов, а затем нажмите кнопку Приложение Windows Из списка Шаблоны.
  4. В Имя поле типа GetIconSample.

Используйте функцию SHGetFileInfo

  1. Добавьте следующий код в начало файла Form1.vb.
    Imports System.Runtime.InteropServices
    					
  2. Добавьте следующий код в Форма Form1 класс после НАСЛЕДУЕТ оператор.
    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 String
    End Structure
    
    Private 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 IntPtr
    
    Private Const SHGFI_ICON = &H100
    Private Const SHGFI_SMALLICON = &H1
    Private Const SHGFI_LARGEICON = &H0         ' Large icon
    Private nIndex = 0
    					
  3. Добавить listView элемент управления, Кнопка элемент управления и imageList элемент управления в форму. По умолчанию называются ListView1 Button1 и ImageList1 соответственно.
  4. В окне «Свойства» Button1, присвойте свойству text кнопки Выберите файл, а затем добавьте следующий код в 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 SHFILEINFO
    shinfo = New SHFILEINFO()
    Dim openFileDialog1 As OpenFileDialog
    openFileDialog1 = New OpenFileDialog()
    
    openFileDialog1.InitialDirectory = "c:\temp\"
    openFileDialog1.Filter = "All files (*.*)|*.*"
    openFileDialog1.FilterIndex = 2
    openFileDialog1.RestoreDirectory = True
    
    listView1.SmallImageList = imageList1
    listView1.LargeImageList = ImageList1
    
    shinfo.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 + 1
    End If
    					

Выполнение проекта

  1. Скомпилируйте проект: на Построение меню, нажмите кнопку Построение решения.
  2. Нажмите клавишу F5 для запуска проекта.
  3. Нажмите кнопку Выберите файл, а затем выберите файл в Открыть диалоговое окно. Имя файла, а также значок, связанный с файлом отображается в ListView элемент управления.

Ссылки

Для получения дополнительных сведений в Microsoft Visual C#.NET версии данной статьи, щелкните следующий номер статьи базы знаний Майкрософт:
319350 Как использовать функцию SHGetFileInfo для получения значков, которые связаны с файлами в Visual C#.NET

Свойства

Код статьи: 319340 - Последний отзыв: 7 июня 2011 г. - Revision: 4.0
Информация в данной статье относится к следующим продуктам.
  • Microsoft Visual Studio .NET 2002 Professional Edition
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 Academic Edition
Ключевые слова: 
kbhowtomaster kbmt KB319340 KbMtru
Переведено с помощью машинного перевода
ВНИМАНИЕ! Перевод данной статьи был выполнен не человеком, а с помощью программы машинного перевода, разработанной корпорацией Майкрософт. Корпорация Майкрософт предлагает вам статьи, переведенные как людьми, так и средствами машинного перевода, чтобы у вас была возможность ознакомиться со статьями базы знаний KB на родном языке. Однако машинный перевод не всегда идеален. Он может содержать смысловые, синтаксические и грамматические ошибки, подобно тому как иностранец делает ошибки, пытаясь говорить на вашем языке. Корпорация Майкрософт не несет ответственности за неточности, ошибки и возможный ущерб, причиненный в результате неправильного перевода или его использования. Корпорация Майкрософт также часто обновляет средства машинного перевода.
Эта статья на английском языке:319340

Отправить отзыв

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com