Private Declare Function ExtractIcon Lib "shell32.dll " Alias "ExtractIconA " (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll " (lpPictDesc As PICTDESC, riid As Any, ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long Private Type PICTDESC Size As Long Type As Long hBmpOrIcon As Long hPal As Long End Type ' 取得EXE文件图标 ' 参数:EXE文件完整路径名 Public Function GetAppIco(ByVal PathName As String) As StdPicture
Dim lRet As Long Dim aGuid(0 To 3) As Long Dim oNewPic As IPicture Dim lpPictDesc As PICTDESC
枕善居很不错哦
(ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As
Long) As Long
Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll "
(lpPictDesc As PICTDESC, riid As Any, ByVal fPictureOwnsHandle As Long,
IPic As IPicture) As Long Private Type PICTDESC
Size As Long
Type As Long
hBmpOrIcon As Long
hPal As Long
End Type ' 取得EXE文件图标
' 参数:EXE文件完整路径名
Public Function GetAppIco(ByVal PathName As String) As StdPicture
Dim lRet As Long
Dim aGuid(0 To 3) As Long
Dim oNewPic As IPicture
Dim lpPictDesc As PICTDESC
lRet = FileLen(PathName) ' 文件是否存在?
lRet = ExtractIcon(App.hInstance, PathName, 0)
If lRet Then
lpPictDesc.Size = Len(lpPictDesc)
lpPictDesc.Type = vbPicTypeIcon
lpPictDesc.hBmpOrIcon = lRet
aGuid(0) = &H7BF80980
aGuid(1) = &H101ABF32
aGuid(2) = &HAA00BB8B
aGuid(3) = &HAB0C3000
' 将图标转换成 Picture 对象
OleCreatePictureIndirect lpPictDesc, aGuid(0), True, oNewPic
Set GetAppIco = oNewPic
End If
End Function Private Sub Command1_Click()
Set Me.Icon = GetAppIco( "C:\WINDOWS\explorer.exe ")
End Sub