te paso mi codigo a ver si te sirve
en un form vacio dibujas un ListView1, un Command1, un ImageList1 y un Picture1
Luego este es el code completo
Option Explicit
Private Declare Function SHGetFileInfo Lib "shell32.dll" Alias "SHGetFileInfoA" (ByVal pszPath As String, ByVal dwFileAttributes As Long, psfi As SHFILEINFO, ByVal cbFileInfo 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 hdcDst As Long, ByVal x As Long, ByVal y As Long, ByVal fStyle As Long) As Long
Private Const SHGFI_SMALLICON = &H1
Private Const SHGFI_SYSICONINDEX = &H4000
Private Const SHGFI_TYPENAME = &H400
Private Const MAX_PATH = 260
Private Type SHFILEINFO
hIcon As Long
iIcon As Long
dwAttributes As Long
szDisplayName As String * MAX_PATH
szTypeName As String * 80
End Type
Private Sub ObtenerIconoLocal()
Dim LI As ListItem
Dim FI As SHFILEINFO
Dim hImage As Long
ImageList1.ListImages.Clear
Dim IconoImageLIST As Byte
IconoImageLIST = 1
For Each LI In ListView1.ListItems
Open "x" & LI.Text For Binary Access Read As #5
Close #5
Picture1.Cls
Picture1.Width = 240: Picture1.Height = 240
hImage = SHGetFileInfo("x" & LI.Text, ByVal 0&, FI, Len(FI), SHGFI_SYSICONINDEX Or SHGFI_SMALLICON)
ImageList_Draw hImage, FI.iIcon, Picture1.hDC, 0, 0, SHGFI_SMALLICON
ImageList1.ListImages.Add Key:="key" & ImageList1.ListImages.Count, Picture:=Picture1.Image
Kill "x" & LI.Text
ListView1.View = lvwReport
Set ListView1.SmallIcons = ImageList1
Set ListView1.Icons = ImageList1
LI.SmallIcon = IconoImageLIST
LI.Icon = IconoImageLIST
IconoImageLIST = IconoImageLIST + 1
Next LI
End Sub
Private Function FileTipo(Ruta As String) As String
Dim FI As SHFILEINFO
SHGetFileInfo Ruta, 0, FI, Len(FI), &H10 Or &H400
FileTipo = FI.szTypeName
End Function
Private Sub Command1_Click()
'ALGUNOS EJEMPLOS
With ListView1.ListItems.Add(, , "programa.exe")
.SubItems(1) = "kb"
End With
With ListView1.ListItems.Add(, , "musica.mp3")
.SubItems(1) = "kb"
End With
With ListView1.ListItems.Add(, , "pelic.mpeg")
.SubItems(1) = "kb"
End With
With ListView1.ListItems.Add(, , "Lyb.dll")
.SubItems(1) = "kb"
End With
With ListView1.ListItems.Add(, , "tuto.pdf")
.SubItems(1) = "kb"
End With
ObtenerIconoLocal
End Sub