Cómo utilizar la función SHGetFileInfo para obtener los iconos que están asociados con archivos en Visual Basic.NET

Seleccione idioma Seleccione idioma
Id. de artículo: 319340 - Ver los productos a los que se aplica este artículo
Para obtener una versión de Microsoft Visual C# .NET de este artículo, consulte 319350.
Expandir todo | Contraer todo

En esta página

Resumen

En este artículo paso a paso describe cómo utilizar la función SHGetFileInfo para obtener los iconos asociados con los archivos.

Crear una aplicación de Windows Forms

  1. Inicie Microsoft Visual Studio NET..
  2. En el menú archivo , seleccione nuevo y, a continuación, haga clic en proyecto .
  3. En el cuadro de diálogo Nuevo proyecto , haga clic en Proyectos de Visual Basic bajo Tipos de proyecto y, después, haga clic en Aplicación para Windows en plantillas .
  4. En el cuadro nombre , escriba GetIconSample .

Utilice la función SHGetFileInfo

  1. Agregue el código siguiente al principio del archivo Form1.vb.
    Imports System.Runtime.InteropServices
    					
  2. Agregue el código siguiente en la clase Form1 después de la instrucción 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 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. Agregue un control de lista , un control de botón y un control imageList al formulario. Los nombres predeterminados son ListView1, Button1 y ImageList1.
  4. En la ventana Propiedades de Button1 , establezca el texto del botón para Seleccionar un archivo y, a continuación, agregue el código siguiente en el evento 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
    					

Ejecutar el proyecto

  1. Compilar el proyecto: en el menú Generar , haga clic en Generar solución .
  2. Presione F5 para ejecutar el proyecto.
  3. Haga clic en Seleccionar un archivo y, a continuación, seleccione un archivo en el cuadro de diálogo Abrir . El nombre del archivo y el icono que está asociado con el archivo aparecerá en el control ListView .

Referencias

Para obtener información adicional en una versión de Microsoft Visual C# .NET de este artículo, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
319350Cómo utilizar la función SHGetFileInfo obtener los iconos que están asociados con archivos en Visual C# .NET

Propiedades

Id. de artículo: 319340 - Última revisión: martes, 06 de julio de 2004 - Versión: 2.0
La información de este artículo se refiere a:
  • Microsoft Visual Studio .NET 2002 Professional
  • Microsoft Visual Studio .NET 2002 Enterprise Architect
  • Microsoft Visual Studio .NET 2002 Enterprise Developer
  • Microsoft Visual Studio .NET 2002 Academic Edition
Palabras clave: 
kbmt kbhowtomaster KB319340 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 319340

Enviar comentarios

 

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