百度站长资源平台:从程序获取ICO图标
Option Explicit
'功能:
' '获取文件(EXE、DLL)中包含的图标资源
'
'涉及到的API
' ExtractIcon
' DrawIcon
'
'来源:不详
'
'API声明
'Private Declare Function ExtractIconEx Lib "shell32.dll" Alias "ExtractIconExA" (ByVal lpszFile As String, ByVal nIconIndex As Long, phiconLarge As Long, phiconSmall As Long, ByVal nIcons As Long) As Long
'功能:获取指定文件的图标
'参数:
' hInst 应用程序句柄
' lpszExestrFile EXE、DLL文件名
' nIconIndex 图标索引
'返回值:
' 当nIconIndex为-1时,返回文件包含的图标总个数
' 当nIconIndex为其他值时,返回文件的第nIconIndex个图标的句柄
Private Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExestrFile As String, ByVal nIconIndex As Long) As Long
'功能:在指定的绘图设备上绘制图标
'参数:
' hdc 绘图设备句柄
' x 水平坐标(像素)
' y 垂直坐标(像素)
' hIcon 要绘制的图标句柄
Private Declare Function DrawIcon Lib "user32" (ByVal hdc As Long, ByVal x As Long, ByVal y As Long, ByVal hIcon As Long) As Long
Private Sub Command1_Click()
Dim i As Long
Dim j As Long
Dim k As Long
Dim lngCount As Long '图标总数
Dim strFile As String '文件名
strFile = "D:\小工具\arswp2\arswp.exe"
lngCount = ExtractIcon(App.hInstance, strFile, -1)
If lngCount > 0 Then
Do
j = ExtractIcon(App.hInstance, strFile, i)
k = DrawIcon(Picture1.hdc, 10 + 40 * i, 10, j)
i = i + 1
If i = lngCount Then
Exit Sub
End If
Loop
Else
j = MsgBox(strFile & "文件中没有图标!")
End If
End Sub