vb Obtener icono de archivo
'Código en el módulo
Opción explícita
Const pública SHGFI_DISPLAYNAME = amp; H200
Const pública SHGFI_EXETYPE = amp; H2000
Const pública SHGFI_LARGEICON = amp; amp H4
Const pública SHGFI_SMALLICON = amp; H1
Const pública SHGFI_SYSICONINDEX = amp H4000
Const pública SHGFI_TYPENAME = amp; p> Constante pública BASIC_SHGFI_FLAGS = SHGFI_TYPENAME o SHGFI_SHELLICONSIZE o SHGFI_SYSICONINDEX o SHGFI_DISPLAYNAME o SHGFI_EXETYPE
Constante pública MAX_PATH = 260
Constante pública ILD_TRANSPARENT = amp; SHFILEINFO
hIcon As Long
iIcon As Long
dwAttributes As Long
szDisplayName As String * MAX_PATH
szTypeName As String * 80
Tipo de finalización
Función de declaración pública SHGetFileInfo Lib _
"shell32.dll" Alias "SHGetFileInfoA" _
(ByVal pszPath As String, _
ByVal dwFileAttributes As Long, _
psfi As SHGetFileAttributes As String * 80
Tipo de fin
Función de declaración pública p> psfi como SHFILEINFO, _
ByVal cbSizeFileInfo As Long, _
ByVal uFlags As Long) As Long
Función de declaración pública 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
Sinfo público As SHFILEIN
FO
Const pública SHGFI_USEFILEATTRIBUTES = amp; H10
Const pública SHGFI_ICON = amp; ==================================
'Crear un nuevo formulario, agregar un TextBox al formulario para ingresar la ruta del archivo
'y dos cuadros de imagen para mostrar los íconos extraídos
'Aquí está el código en el formulario
Private Sub Picture2_Click( )
VB.SavePicture Picture2, App.Path amp "\ico.ico"
End Sub
Private Sub Text1_Change() 'Icono que se mostrará Ruta
Dim hImgSmall As Long
Dim fName As String 'Letra de unidad, nombre de carpeta, nombre de archivo
Dim r As Long
Atenuar hImgLarge mientras
Atenuar Info1 como cadena, Info2 como cadena
fName = Text1.
hImgSmallamp = SHGetFileInfo(fName$, 0amp;, shinfo, Len(shinfo), SHGFI_ICON O SHGFI_SMALLICON O SHGFI_SYSICONINDEX O SHGFI_USEFILEEATTRIBUTES)
hImgLargeamp;= SHGetFileInfo(fName$, 0amp;, shinfo, Len(shinfo), SHGFI_ICON O BASIC_SHGFI_FLAGS O SHGFI_SYSICONINDEX O SHGFI_USEFILEEATTRI BUTES) p >
Info1 = Izquierda$(shinfo.Info1 = Izquierda$(shinfo.szDisplayName, InStr(shinfo.szDisplayName, Chr$(0)) - 1)
Info2 = Izquierda$(shinfo. szTypeName , InStr(shinfo.szTypeName, Chr$(0)) - 1)
Debug.Picture2.AutoRedraw = True
r = ImageList_Draw(hImgSmallamp;, shinfo.iIcon, Picture1 . hDC, 0, 0, ILD_TRANSPARENT)
r = ImageList_Draw(hImgLargeamp;, shinfo.iIcon, Picture2.hDC, 3, 3, ILD_TRANSPARENT)
Establecer imagen
e1.Imagen = Imagen2.Imagen(hImgSmallamp;, shinfo.iIcon, Imagen1.hDC, 0, 0, ILD_TRANSPARENT)