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

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

Snapdragon LLVM编译器全新升级 支持骁龙64位处理器 EDP:基于Node.JS与NPM的企业级开发平台 想改变世界,先改变自己——知名Hacker、发明家Mitch Altman专访 《近匠》iHealth,健康大数据助力硬件“破壳” 一周消息树:如何做到每天写代码? 一周热点:微软SQL Server 2014三大新特性 《Make》创始人Dale Dougherty:全民创客 DevOps正在扼杀程序员? OpenStack新版本:新增近350个功能,修复Bug超2900个 【走近讲师】易欢欢:数据对接和后台是互联网金融的技术最难点 最火HTML5 JavaScript游戏引擎:国外篇(二) 挑战最强大脑——来自全球的14个编码社区 摩尔定律让位于贝索斯定律 InPaaS:新一代云计算应用平台 【技术博客推荐】樊哲谈机器学习算法与Mahout Scala 2.11.0发布 仅支持Java 8部分功能 诺基亚彻底“卖身” 变“微软移动” 10款高效简化移动开发过程的工具 《近匠》AppCan:打造成云生态的移动PaaS平台 WhatsApp壮举:活跃用户超五亿、日7亿幅照片和1亿个视频 如期而至,GCC 4.9.0正式版发布! 【走近讲师】孙昌勋:容联云通讯构筑通讯能力云平台生态圈 最新版本的Hive 0.13发布,增加ACID特性 开发中的“软”与“硬”:高画质移动游戏开发之道 从国际编码竞赛来看编程语言受众度 AMD迎接变革:加速OpenCL的未来 角逐Hadoop市场,Cloudera与Hortonworks竞争白热化 OpenStack将提供对Docker的支持 Facebook Q1财报:营收25.02亿美元、59%来自于移动 黑客们盯上了卫星,IOActive的惊人发现 开发汽车应用之前,你必须了解的7件事 请大家帮忙看一下,关于Delphi的三层MIS开发 如何获得经典的C++/MFC方面的电子文档,中英都行,谢谢! 压缩中提到的文件头有什么作用 , 请问各位专家,在网页上如何制作视频点播?有几种方式! 我报了中程谁有历年的中程试卷? 我收到的信都是?号,怎么看???? VB中是否有移位操作符??是否有_能够得到数据类型宽度的函数? 哪里有core java的e版down啊? 有事好商量!请进! DLL编程错误,请高手指教一下!! 活见鬼,真气人....... 问一个trigger问题? 问一下:我的char*都用_T("asdfsafd")表示了,资源也没任何问题,可有时候运行程序显示乱码 在论坛里,发一个帖子新开一个窗口,当发完后让原来那个窗口刷新一下 我的机子到底怎么回事???? 我试试.. CListCtrl中如何选定整个一行? 来到济南天气太热,特来送分 ★★★★★ 见于现在伪ID和盗用密码的现象十分嚣张,我提议…… ★★★★★ 请教各位,我用vb6.0访问ms sql7.0数据库,为什么有时出现,“过期,数据已超时?” 请问COM和DLL有什么区别和联系?(30分) 关于侯老师 win95-a-developers-guide 一书的源配书... ISAPI中不能存取ASP中的Session、Application变量?高手你老人家在哪里? 大家来看看这些招聘题目合不合适 提一个网页制作的问题哈,大家不要扔西红市啊,网叶制作可是程序员的基本技能之一 activeskin里的skinbuilder有谁用过???来讨论吧 我在msdn上看到vb中的字符串有两种:定长字符串和变长字符串。请问如何分别声明这两种类型? 怎样在ADO中引用已打开的recordset的某一字段值,请给几个例,谢谢了! seedundersnow and holyfire help me!about 8253! 谁有cute ftp 4.2.6 beta的注册码 请问如何把页面查询到的记录导入到Excel中呢? 有用过TAdvStringGrid的吗?OnGetEditorType( )为何不被调用? 请教高手如何用Xsl编制函数控制Xml??急急 哪位给一个MD5的例子!谢谢了 长春的李延生来领分 求救:一个VC中多线程的问题 提个问题,原来对VC尤其是界面和C++语法这一块比较熟,现在由于公司需要转C++BUILDER,难不难,需要熟悉哪些 [总300分,会继续加分]哪位大哥用编程实现过创建SQL Server的DTS package并且run the package的全过程[急] 能不能使用html 压缩中提到的文件头有什么作用 , 保含哪些信息 菜鸟问题1 提一个网页制作的问题哈,大家不要扔西红市啊,网叶制作可是程序员的基本技能之一。。。。。。。 关于:import java.util.StringTokenizer; 问题! 如何实现在某特定时间(如每月1号,或7天后)执行特定asp程序? 在开发工具中如:(vc,jsp)中如何得到oracle中自定义函数的返回值 当form被移动的时候会相应什么事件的? 关于使用mscomm32.ocx中的一些问题 类似股票信息显示系统的问题(图形显示) 强烈抗议:无怨无仇,为什么冒用我的ID 写一些乱七八糟的东西????? 一个简单的线程问题! 请问高手:两个类之间的关联关系如何实现? 简便计算:0.75x16+3/4x5一75% 2.7x0.6+4/5x2.7-2.7x2/简便计算:0.75x16+3/4x5一75% 2.7x0.6+4/5x2.7-2.7x2/5 95x38+62÷1/95 {5/6-(2/5+1/3)}x5/7分数啊.急 设x1,x2是关于x的一元二次方程x的平方-2mx+m-1=0的两个实根,则(x1+5x2)(x2+5x1)的最小值为? 2²+4²+6²+···+50² 编写一个程序,计算x-1/2*x3/4+1/2*3/4*x5/6-1/2*3/4*5/6*x7/8+.的近似值直到最后一项的绝对值小于eps 用c语言编~ 设X1,X2为方程x²(平方)+X-3=0的两个根,求X1³(立方)-X2²(平方)+30的值 2²+4²+6²+.+50²等于多少等于多少赶时间 (X一5/6)X5/6=25. 设函数f(x)=x3-6x+5,xεR1;求函数fx的单调区间2,求函数fx在区间[-2,2]上的最值 计算:1²-2²+3²-4²+5²-6²+...+49²-50²急、在线等 解方程,(x+5.5)X5=120怎么算用T等式 求函数f(x)=x3-5x2+8x-4在【0,3】上的值域 求(a-2)²-6(2-a)的值 其中a=-2 计算(一5)一(一5)x5分之一x(一4) 设函数f(x)=x3-6x+5,xεR 1;求函数fx的单调区间 2,求函数fx在区间[设函数f(x)=x^3-6x+5,xεR 1;求函数fx的单调区间2,求函数fx在区间[-2,2]上的最值 (1).(a-b)²-(a-b)-2 (2).(a+b)²+(a+b)-6 已知sinθ,cosθ是关于x的方程x^2-ax+a=o的两个根 θ求1.sin^3(θ)+cos^3(θ)的值2.tanθ+1/tanθ的值 f(x)=2^2x-5x2^x-1+1,它的最小值是?RT.实在算不出来了,只能求助各位大大了0.0f(x)=(2^2x)-(5x2^x-1)+1 a-b=2,a²+b²=6,则ab=? 已知关于x的方程2x^2-〔(根号3)+1〕x+m=0的两根为 sin θ,cos θ ,θ∈(0,2π)1.sinθ/(1-cotθ)+cosθ/(1-tanθ)的值2.m的值3.方程的两根及此时θ的值 用秦九韶算多项式f(x)=6x2+3x2-5x2+4当X=4的值时需要把多项式改写成什么 若a+b=6.ab=2.则a²+b²=()(a-b)²=() 已知 θ∈【0,2π】sinθ,cosθ是关于X的方程X方-KX+K+1=0的根,求角θ 已知函数f(x)=0.5x2-x+1.5的定义域和值域都是[1,-b],求b的值. ①a(a-1)-2=0②a(a²-1)-6≠0.求a 已知关于x的方程2x^2-(√3+1)x+m=0的两个实数根为sinθ和cosθ,θ属于(0,2π)求方程的根及θ的值 已知f(x)是二次函数,且f(x)+f(2x)=5x2+3x+2,求f(x) 打一成语 一 7/8 1、2、5 二四六八十 0000 40÷6 1% 7÷2 1000²=100×100×100 设x1、x2 是一元二次方程x2+4x-3=0的两个根,2x1(x22+5x2-3)+a =2,  则a = .设x1、x2是一元一次方程X平方+4x-3=0的两根,2x1(x2的平方+5x2-3)+a=2,则a=我知道怎么算了 a=8 心情好啊 f(x)=5(x≤1) f(x)=1/x-1(x﹥1) f(5)= f(1/2)=f(x)=5(x≤1)f(x)=1/x-1(x﹥1)f(5)=f(1/2)= 打一成语 (1)一 (6)0000 (7)40÷6 (8)1% (9)7÷2 (10)1000²=100×100×100二四六八十÷7 设X1、X2是一元二次方程 X - 4X - 3 = 0 的两个根,2X1(X2+5X2-3)+a=2,则a=___ f(x)=x(1-x)(x大于等于0) f(x)=x(1+x)(x小于0)判断f(x)奇偶性 (1²+3²+5²+……+99²)-(2²+4²+6²+……+100²) 设x1,x2是一元二次方程x²+4x-3=0的两个根,2x1(x2²+5x2-3)+a=2,则a= 已知f(x)=x(1/2x-1+1/2)⑴判断f(x)的奇偶性 ⑵求证:f(x)大于0 1-2²+3²-4²+5²-6²+……+99²-100² 关于x的实系数一元二次方程x²+ax+2b=0的两个实数根分别位于区间(0,1)(1,2)则b-2/a-1的取值范围是 已知函数f(x)=1/2^x-1+1/2 求f(x)的定义域 判断函数f(x)的奇偶性 证明当X大于0时f(x)大于0 1²-2²+3²-4²+5²-6²+····+99²-100²=急求,好的加分 关于x的一元二次方程5x²-ax-1=0有两个不同的实根 一个位于区间(-1,1)另一个(1,2关于x的一元二次方程5x²-ax-1=0有两个不同的实根 一个位于区间(-1,1)另一个(1,2) 则实数a的取值范围 求 函数f(x)=x(x大于-1小于等于1)的奇偶性是A :奇函数非偶函数B:偶函数非奇函数C:奇函数且偶函数D:非奇函数偶函数 某动物园有一个圆柱形状的水池内直径10米深0.6米.如果放水后水面离池口0.1米,有水多少吨(1立方米水重1 7.5X2.7+1.9X2.5 使用乘法分配率 设实系数一元二次方程x^2+ax+2b-2=0有两个相异实根,其中一根在区间(0,1)内,另一根在区间(1,2)内,则(b-4)/(a-1)的取值范围是我知道这题可用线性规划做.想问下,为什么不能用韦达定理,也就是 4/5 x4+2/5x2+1/5x16 简便计算 怎么简算.0.5x2.5x12.5x64 实系数一元二次方程x²+ax+2b=0有两个根,一个根在区间(0,1),另一个根在区间(1,2)内,求:(1),点(a,b对应的区域的面积?(2).b-2/a-1的取值范围.(3).(a-1²)+(b-2)²的值域 六年级4/5x4+2/5x2+5/1x16怎么算啊? 1.25X0.32X2.5 简算 把一元二次方程-5x2+x-3=0的二次项系数变为正数,且使方程的根不变,则变形后的方程为().这是选项:A.5x2-x-3=0 B.5x2-x+3=0 C.5x2+x-3=0 D.5x2+x+3=0 (4.4x7.5x4.8)除以91.5x2.5x2.4)简便运算 1.25x0.32x250 简算 已知sina是方程5x2+7x-6=0的根求[sin(3π/2-a)tan(2π-a)]/[cos(π/2-a)cos(π/2+a)]的值 3、5x2、1,简便运算 (4.8x7.5x8.1)除以(2.5x2.7x2.4) 已知方程5x2+kx-6=0的一个根式2,求它的另一个根及K的值 简便运算:11分之2x7分之5+11分之5x2又7分之6,对的我一定立马采纳, 2/5x2/10+9/10x0.4-2除以5x1/10,x:是乘,尽快,我明天要演讲了 设X1,X2是方程X的平方+X-3=0的两个根,则X1的立方-4X2的平方+19的值是
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn