vb怎么得到程序文件图标

浪客 2007-05-20 08:50:36
如题。
跟任务管理器中的列表一样,在每个程序名称前面都显示相应程序文件的图标,这个是怎么做的,也就是怎么获得那些程序的图标?

请各位高手指教。最好能有具体的源代码。谢了
...全文
325 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fj182 2007-05-21
  • 打赏
  • 举报
回复
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

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
fankun 2007-05-21
  • 打赏
  • 举报
回复
顶楼上
denghualiang 2007-05-20
  • 打赏
  • 举报
回复
顶楼上的。。
good889 2007-05-20
  • 打赏
  • 举报
回复
窗体的有个属性icon,点击后面的...选择自己做好的图标就可以了.这个就是任务管理器前面的那个图表..
fj182 2007-05-20
  • 打赏
  • 举报
回复
Public Declare Function ExtractIcon Lib "shell32.dll" Alias "ExtractIconA" (ByVal hInst As Long, ByVal lpszExeFileName As String, ByVal nIconIndex As Long) As Long
Public 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

1,453

社区成员

发帖
与我相关
我的任务
社区描述
VB 控件
社区管理员
  • 控件
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧