说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

VB如何从文件中提取图标

HTML文档下载 WORD文档下载 PDF文档下载
VB如何从文件中提取图标



使用下面的示例,你可以方便地从EXE,DLL及ICO文件中提取图标。该示例程序使用ExtractIconEX API函数从文件中提取图标,并返回图标句柄,然后利用该句柄,使用DrawIcon函数将图标绘制到目标设备中。最后清除句柄以释放系统资源。

创建新工程后,在工程中添加对Standard OLE Types的引用,然后在工程中添加一个标准模块。将下面的代码粘贴到标准模块中:

Option Explicit

Private Type PicBmp
Size As Long
tType As Long
hBmp As Long
hPal As Long
Reserved As Long
End Type
Private Type GUID
Data1 As Long
Data2 As Integer
Data3 As Integer
Data4(7) As Byte
End Type
Private Declare Function OleCreatePictureIndirect Lib "olepro32.dll" (PicDesc As PicBmp, RefIID As GUID, _
ByVal fPictureOwnsHandle As Long, IPic As IPicture) As Long

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

Private Declare Function DestroyIcon Lib "user32" (ByVal hicon As Long) As Long

Public Function GetIconFromFile(FileName As String, IconIndex As Long, UseLargeIcon As Boolean) As Picture

'参数:
'FileName - 包含有图标的文件 (EXE or DLL)
'IconIndex - 欲提取的圉标的索引,从零开始
'UseLargeIcon-如设置为True,则提取大图标,否则提取小图标
'返回值: 包含标标的Picture对象

Dim hlargeicon As Long
Dim hsmallicon As Long
Dim selhandle As Long

' IPicture requires a reference to "Standard OLE Types."
Dim pic As PicBmp
Dim IPic As IPicture
Dim IID_IDispatch As GUID

If ExtractIconEx(FileName, IconIndex, hlargeicon, hsmallicon, 1) > 0 Then

If UseLargeIcon Then
selhandle = hlargeicon
Else
selhandle = hsmallicon
End If

' Fill in with IDispatch Interface ID.
With IID_IDispatch
.Data1 = &H20400
.Data4(0) = &HC0
.Data4(7) = &H46
End With
' Fill Pic with necessary parts.
With pic
.Size = Len(pic) ' Length of structure.
.tType = vbPicTypeIcon ' Type of Picture (bitmap).
.hBmp = selhandle ' Handle to bitmap.
End With

' Create Picture object.
Call OleCreatePictureIndirect(pic, IID_IDispatch, 1, IPic)

' Return the new Picture object.
Set GetIconFromFile = IPic

DestroyIcon hsmallicon
DestroyIcon hlargeicon

End If
End Function
在窗体中添加一个PictureBox控件和一个命令按钮,把下面的代码加入到命令按钮的Click事件中:

Set Picture1.Picture = GetIconFromFile("c:\windows\moricons.dll", _ 0, True)

按F5运行程序,点击命令按钮后,PictureBox会将文件moricons.dll中的图标索引为零的图标画到PictureBox中。

让窗体居中 -VB资料 让所有的控件都动起来 -VB资料 让最大化和最小化按钮消失-VB资料 任意多边形的窗口-VB资料 如 何将「拒 绝 被 盖 住 的 窗 口 」还 原-VB资料 VB如何创建椭圆形的窗体? VB如何创建无Icon的窗体? VB如何防止Edit框中的Password不被非法获取 VB如何将鼠标显示成动画鼠标? VB如何利用程序拉下 ComboBox? VB如何让窗体右上角的X失效? VB如何使Form的背景图随Form大小改变 VB如何使Text文本框的属性只读? VB如何使窗体右上角的"X"无效? VB如何使窗体最小化并消失 VB如何在VB和Delphi中快速实现立体化窗口显示 VB如何在VB中实现绘图区的大十字光标 VB如何在VB中制作不回显的文本框 VB如何制作浮动式窗口 闪烁的Label-VB资料 设定StatusBar的文字成不同的颜色-VB资料 设计一个可中断循环的按钮-VB资料 设置“执行无用户界面”-VB资料 生成一个透明窗体 -VB资料 实现窗体内部的左右移动 -VB资料 实现鼠标移到窗口上时变大,移出窗体时变小(如《东方快车》)-VB资料 实现图片平铺于窗体中-VB资料 使程序的标题条闪烁 -VB资料 使窗口总在最前 -VB资料 使窗体右上角的X按钮失效 -VB资料 VB使用 WIN95 的选择目录对话框 送分了! 菜鸟提问: 用TDBNavigator + DBGrid删除记录时,会弹出一个英文的删除确认对话框,请问如何去掉该对话框? 急!!!win2000 server安装server pack 2重新启动进入系统后,一切都变成黑白的了???怎样解决?谢谢! 大家帮忙,哪里有datalist中绑定datalist或者datagrid的例子啊? 分啊 程序发布 dephi中用哪个函数可以解决两个日期的差,要求精确到分钟! 谁知道ipvod的透屏技术? 怎么从没有信任关系的网域的机器B上copy文件?有一个可以访问B的账号和密码. jsp中如何实现树状结构? applet 与servlet的通讯 请大虾们进来看看 请问大家如果使用了两个session会有什么影响吗?? 中国古典四大名著教给我们什么? 在iis中,如果需要让访问每个主页的用户都看到一个主页通知,该怎么做?就好象是做一条广告一样 怎么开始学习JAVA,没有c++的基础,很困惑 请教专家高手有什么好建议,谢谢 wingsun,bcb等大虾帮小弟看看这个"参数错误"的问题.谢谢 如何理解连接身份 如何用TURBO C编背景音乐? 我用exec() 来执行notepad.exe , 用它来打开我想要的文本 , 可是并没有得到notepad.exe执行。 你是想找一个爱你的人还是会找一个你爱的人? VC++中如何列出SQL_SERVER服务器?急救!!! 发展方向的问题??? 急救!!在线等待!!关于XmlHttp!! 关于wsad的使用上哪个论坛比较好,请大家推荐 关于Windows CE下面的密码验证 关于Visio2002版的安装问题 搞不定了:为啥我的EnumWindowsProc会引起outlook提示?附源码 给中国足球的一点建议,如果照着这条路走,20年后中国队还可以闯进世界杯 急急急!!关于打印问题!!!!!!!! 有谁在WIN2000P+ORACLE805安装了PROC? 寻找北京地区的兼职项目. 谁知道VB MSDN在哪里有下载,我给分! 关于Visual C++的编译器手册。 在一个程序中如何控制Ftp的执行??(急,用windows API实现,不是MFC) vb.net安装和vb6冲突么? 关于JDialog的问题! 各位帮帮忙,怎样读写一个二进制文件?急!!!!!!!(答对了给高分) 有些什么好的中程书籍??? 如何动态的切换数据窗口呢? 各位任兄,谁知道如何对jsp文件加密,就像php那样 为什么自定义过程,出错。说[Error] Unit2.pas(29): Undeclared identifier: 'NMFTP1'unit Unit2; 浏览器插件讨论 问一个Linux下安装软件的问题,太弱了别笑!!!! 急急急:如何让dbgrid控件实现排序功能,,100分 新手问题~~帮帮我啊~~ 我做共享软件的一点经验,希望能抛砖引玉 在iis的服务器上需要安装什么客户端软件才能使asp联接到oracle数据库服务器上? 怎样在vb中控制EXCEL打印报表 如何判断多选框是否选中?
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘