通知栏是哪一个? 如果是要获得程序和文件的系统图标的话,如下:Public Const MAX_PATH = 260 Public Const SHGFI_DISPLAYNAME = &H200 Public Const SHGFI_EXETYPE = &H2000 Public Const SHGFI_SYSICONINDEX = &H4000 ' System icon index Public Const SHGFI_LARGEICON = &H0 ' Large icon Public Const SHGFI_SMALLICON = &H1 ' Small icon Public Const ILD_TRANSPARENT = &H1 ' Display transContainer Public Const SHGFI_SHELLICONSIZE = &H4 Public Const SHGFI_TYPENAME = &H400 Public Const BASIC_SHGFI_FLAGS = SHGFI_TYPENAME Or SHGFI_SHELLICONSIZE Or SHGFI_SYSICONINDEX Or SHGFI_DISPLAYNAME Or SHGFI_EXETYPE Public Type SHFILEINFO hIcon As Long iIcon As Long dwAttributes As Long szDisplayName As String * MAX_PATH szTypeName As String * 80 End Type Public 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 Public Declare Function ImageList_Draw Lib "comctl32.dll" (ByVal himl&, ByVal i&, ByVal hDCDest&, ByVal X&, ByVal Y&, ByVal Flags&) As Long Public Shinfo As SHFILEINFO Public Function GetFileIcon(TempFileName As String) As String '返回imagelist的Key Dim hImgLarge As Long ' The handle to the system image list Dim FileType As StringIf TempFileName = "" Or Dir(TempFileName) = "" Then GetFileIcon = "NonFile" Exit Function End IfhImgLarge& = SHGetFileInfo(TempFileName, 0&, Shinfo, Len(Shinfo), BASIC_SHGFI_FLAGS Or SHGFI_LARGEICON) FileType = Left$(Shinfo.szTypeName, InStr(Shinfo.szTypeName, Chr$(0)) - 1) If FileType = "应用程序" Then FileType = TempFileName picLarge.Cls ImageList_Draw hImgLarge&, Shinfo.iIcon, picLarge.hDC, 0, 0, ILD_TRANSPARENTOn Error Resume Next GetFileIcon = imlIcon32.ListImages(FileType).Key If Err.Number <> 0 Then imlIcon32.ListImages.Add , "icon" & FileType, picLarge.Image End If On Error GoTo 0 GetFileIcon = "icon" & FileTypeEnd Function
如果是要获得程序和文件的系统图标的话,如下:Public Const MAX_PATH = 260
Public Const SHGFI_DISPLAYNAME = &H200
Public Const SHGFI_EXETYPE = &H2000
Public Const SHGFI_SYSICONINDEX = &H4000 ' System icon index
Public Const SHGFI_LARGEICON = &H0 ' Large icon
Public Const SHGFI_SMALLICON = &H1 ' Small icon
Public Const ILD_TRANSPARENT = &H1 ' Display transContainer
Public Const SHGFI_SHELLICONSIZE = &H4
Public Const SHGFI_TYPENAME = &H400
Public Const BASIC_SHGFI_FLAGS = SHGFI_TYPENAME Or SHGFI_SHELLICONSIZE Or SHGFI_SYSICONINDEX Or SHGFI_DISPLAYNAME Or SHGFI_EXETYPE
Public Type SHFILEINFO
hIcon As Long
iIcon As Long
dwAttributes As Long
szDisplayName As String * MAX_PATH
szTypeName As String * 80
End Type
Public 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
Public Declare Function ImageList_Draw Lib "comctl32.dll" (ByVal himl&, ByVal i&, ByVal hDCDest&, ByVal X&, ByVal Y&, ByVal Flags&) As Long
Public Shinfo As SHFILEINFO
Public Function GetFileIcon(TempFileName As String) As String
'返回imagelist的Key
Dim hImgLarge As Long ' The handle to the system image list
Dim FileType As StringIf TempFileName = "" Or Dir(TempFileName) = "" Then
GetFileIcon = "NonFile"
Exit Function
End IfhImgLarge& = SHGetFileInfo(TempFileName, 0&, Shinfo, Len(Shinfo), BASIC_SHGFI_FLAGS Or SHGFI_LARGEICON)
FileType = Left$(Shinfo.szTypeName, InStr(Shinfo.szTypeName, Chr$(0)) - 1)
If FileType = "应用程序" Then FileType = TempFileName
picLarge.Cls
ImageList_Draw hImgLarge&, Shinfo.iIcon, picLarge.hDC, 0, 0, ILD_TRANSPARENTOn Error Resume Next
GetFileIcon = imlIcon32.ListImages(FileType).Key
If Err.Number <> 0 Then
imlIcon32.ListImages.Add , "icon" & FileType, picLarge.Image
End If
On Error GoTo 0
GetFileIcon = "icon" & FileTypeEnd Function