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

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中。

广告条轮播-PHP初学入门教程10 操作MySQL数据库实现简单的留言板-PHP初学入门教程11 使用PHP来操作Oracle数据库 -PHP初学入门教程12 技术杂项PHP教程结束篇 -PHP初学入门教程13 .NET中DataSet和DataReader的区别与转换 CGI技术及其开发(二)-Delphi资料 CGI技术及其开发(一)-Delphi资料 COM/DCOM中如何传递数组-Delphi资料 COM与DCOM的区别与联系-Delphi资料 Cookie的建立使用-Delphi资料 Delphi 3中Cookie的建立使用 Delphi 中 串 行 通 信 的 实 现 Delphi4.0 开发WEBMAIL程序 Delphi4的Winsocket编程 Delphi4开发WEBMAIL程序 Delphi编写网络程序的安全措施 DELPHI 和 THE INTERNET Delphi开发Web Server程序如何返回图像 Delphi开发Web Server程序响应用户的输入 DELPHI与INTERNET(二) DELPHI与INTERNET(一) Delphi中串行通信的实现 Email 服务器的简单实现-Delphi资料 Internet编程技巧-Delphi资料 SMTP组件的使用方法-Delphi资料 Web Server程序开发环境的建立-Delphi资料 WEB数据库的开发-Delphi资料 Win32 行程通讯的观念与技术-Delphi资料 编程发送E-mail-Delphi资料 调用那个函数得到本机的IP-Delphi资料 动态改变/添加网络设置中的 TCP/IP 的 DNS 地址-Delphi资料 不合法的八进制数是________ 在线给分,简单问题.. 真的很想学些东西!~~ 什么是PDM 急!!怎样用VBA将一个XLS文件导入到SQL2000数据库中? 我第一次来这,这里很热呀! 是不是在主窗体的FormCreate事件中动态创建Login登录窗口? 【大伙进来聊聊】 ------ 关于动态域名 ------ 如何连接到一个Gopher服务器 动态创建问题,请多多帮忙 自己做的Active控件,在其他(如VB)中正常使用,但嵌入HTML中,param不可用 如何打开现有项目ASP 怎样利用Dev-C++自带的DDK开发windows下的驱动程序? 我绝得很难,不知道你觉得呢?? 大家用过网络助手吗?感觉怎样?PCANYWHERE界面不好,远程桌面不能一起操作 层的定位问题! 高分求 在vc中,怎样使用dll(也有idl)文件呢。请指教。 com入门问题 怎么把用程序加入的控件建立事件呢?高手请进! ADO问题:这样的也会报错,高手解释一下!急,在线等待!!!! 如何用VC给Word加载页眉页脚???? 数据挖掘 急需VC++的高手指点一下,北京的最好,呵呵,成了请你吃饭! 98下的闪存问题 在线等~~~~~~~~ 文件的问题 谁来看看,好难啊 关于oracle数据打包的问题 SQL出错了...以前装好一次..不知道被谁搞了,启动不起了..我重装..就这样了 急!!!为什么的为加了<% %>,传 上去就不能打开呢?去掉又可以的,改成客户端运行又可以 如何将服务器a里mysql的所有数据导道服务器b中? 动网论坛6问题:论坛版面信息(版名、斑竹、版面说明)经常自动丢失 大家帮帮我!!!!!!!!!!!!!!! 数据仓库与数据库 动态创建的列和手工填加的列有什么不同吗? SQL语句中openrowset函数的问题?12点以前结帖,在线等待!!!!!!!!!!!!!!!!! 请问在win2000server中对于ftp设置... Promise真的是混蛋!B死他!(驱动高手帮忙) 客户端怎么封装数据库? 谢谢 杀不出毒,机子还很慢,请大家看看 急啊!系统有问题! 请问怎样知道自己程序的某个DLL是否已经加载? 将数据导出到excel,同名文件自动覆盖应该怎么做? 求教高手! 制作发邮件程序出错,高手请教! 求助高手:在JavaScript中如何赋值给父窗体上的某一ASPX控件? 菜鸟的问题 怎么web页面控制打印范围? 推箱子的每一关是用算法算的,还是人编的? 为什么北京的高程准考证到现在还没有发呀??? 谁有类似万网的域名查询系统??高分相送! 歪歪兔和早教革命哪个好? get 和外国人聊天碰到的,完整的句子是wanna 2 get dirty? one ok rock的读音这个乐队的名字怎么读 是英文一点钟吗 tea怎么读? scented tea怎么读 一个残疾人标志的含义急!急!急啊!随便哪个标志,含义最好简洁点!帮帮忙啊!求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求求 残疾人的成功给人什么启示.(初一的) 有一批球,每个批发价1.5元,后来2元出售,剩下20个球时,已获利50元,有几个球? 体育用品商店按批发价购进一批毽子,每个键子的成本价为1.5元,零售价是2元.卖出一部分后剩下30个毽子,这时不仅收回成本,而且获利55元.商店购进了多少个毽子? 玩具店按批发价格买进一批羽毛球成本为每个1.5元,零售价每个两元.卖出一部分.剩下三十个羽毛球时卖出的钱扣除成本已获利55元原来买进多少个羽毛球. 0、√3、√6、3、2√3、√15、3√2、有何规律? 日本福岛县外海6.8级强震 气象厅发伦敦股市股指25日上涨义乌公布一批人事任免 任命3名副市长丽水男子利用感光材料提炼白银污染环境丽水33岁已婚已育少妇为嫁24岁小网男子强奸亲生女儿长达10年获刑7年日本福岛外海6.8级强震 或有海啸 俄罗斯法律规定亲友要对恐怖分子行为担金华15岁少女被表外公性侵多次 因恐日本本州东岸远海附近发生7.3级左右日本东北地区发生6.8级地震肉价涨 鸡最贵 猪价回升重大项目征地 不应有“尚方宝剑”与妻子吵架家中上吊争“三重”进度 镇街不敢马虎悍妇双刀砍老公 消防员夺刀救人立夏去“心火”看舌头判虚实瓶子甩得酷 是每天几小时练出来的24日来佛山新城看迷你马拉松绿地常平拿地造综合体 万达虎门擒地建手足口病高发 公布数据咋这么难东莞安防协会成立吉尔伽美什偶像在身边星空帝国拳坛之龙重生之天下无贼异界之魔兽全战英雄无敌大隋草头兵震碎苍茫洪荒之龙神洛华的风月神执者天门垭旅游燕子垭旅游九份黄金瀑布旅游摸乳巷旅游鹿港龙山寺旅游鹿港天后宫旅游万柳塘公园旅游张掖国家湿地公园旅游聂耳故居旅游光华街旅游茅岩河漂流旅游
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘