Red de conocimiento informático - Problemas con los teléfonos móviles - vb Obtener icono de archivo

vb Obtener icono de archivo

Una vez usé un fragmento de código para extraer el ícono de un archivo específico. Para usar la función API, puedes consultar

'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)

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)