Obtener Icono de un EXE

Este código devuelve el icono que representa la aplicación en el entorno de Windows. Es el icono que lleva almacenado el EXE en su interior.

Para probar el siguiente ejemplo, debes crear en un formulario 1 PictureBox que se llame “PicImagen”.

Option Explicit

Private Const MAX_PATH = 255
Private Const SHGFI_DISPLAYNAME = &H200
Private Const SHGFI_EXETYPE = &H2000
Private Const SHGFI_SYSICONINDEX = &H4000
Private Const SHGFI_LARGEICON = &H0
Private Const SHGFI_SMALLICON = &H1
Private Const SHGFI_SHELLICONSIZE = &H4
Private Const SHGFI_TYPENAME = &H400
Private Const ILD_TRANSPARENT = &H1
Private Const BASIC_SHGFI_FLAGS = SHGFI_TYPENAME Or SHGFI_SHELLICONSIZE Or SHGFI_SYSICONINDEX Or SHGFI_DISPLAYNAME _
        Or SHGFI_EXETYPE

Private Type SHFILEINFO
   hIcon As Long
   iIcon As Long
   dwAttributes As Long
   szDisplayName As String * MAX_PATH
   szTypeName As String * 80
End Type

Private Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" (ByVal pszPath As String, _
             ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbSizeFileInfo As Long, _
             ByVal uFlags As Long) As Long
Private Declare Function ImageList_Draw Lib "comctl32.dll" (ByVal himl As Long, ByVal i As Long, ByVal hDCDest As Long, _
             ByVal x As Long, ByVal y As Long, ByVal flags As Long) As Long

Private Sub Form_Load()
    Dim strPrograma As String
    Dim shinfo      As SHFILEINFO
    Dim lImagen     As Long

    strPrograma = "C:WINDOWSNOTEPAD.EXE"
    lImagen = SHGetFileInfo(strPrograma, 0&, shinfo, Len(shinfo), BASIC_SHGFI_FLAGS Or SHGFI_LARGEICON)
    PicImagen.Picture = Nothing
    PicImagen.AutoRedraw = True
    Call ImageList_Draw(lImagen, shinfo.iIcon, PicImagen.hDC, 0, 0, ILD_TRANSPARENT)
End Sub

Publicado en es.comp.lenguajes.visual-basic por Alex Martínez

Anuncios

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión /  Cambiar )

Google photo

Estás comentando usando tu cuenta de Google. Cerrar sesión /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión /  Cambiar )

Conectando a %s