文档章节

WinAPI: ExtractIcon - 获取 EXE、DLL 或 ICO 文件中的图标

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 279
阅读 7
收藏 0
点赞 0
评论 0
//声明:
ExtractIcon(
  hInst: HINST;           {调用函数的程序实例}
  lpszExeFileName: PChar; {文件路径; 文件可以是 *.exe、*.dll、*.ico}
  nIconIndex: UINT        {图标索引}
): HICON; {返回图标句柄; 索引为 0 时返回第一个图标句柄; 索引为 #FFFFFFFF 时返回图标总数}

 
 
 
 
 

 

 

  
//举例: unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); end; var Form1: TForm1; implementation {$R *.dfm} uses ShellAPI; {ExtractIcon 在其中声明} procedure TForm1.Button1Click(Sender: TObject); var ico: TIcon; i,count,x,y,w,h: Integer; FilePath: string; begin {随便找了个路径, 如果缺失会退出} FilePath := 'C:\Program Files\Macromedia\Fireworks 8\Fireworks.exe'; if not FileExists(FilePath) then begin ShowMessage('文件不存在'); Exit; end; ico := TIcon.Create; x := 10; y := 10; w := 0; h := 0; Repaint; {先算出文件内的图标总数} count := ExtractIcon(HInstance, PChar(FilePath), HICON(-1)); for i := 0 to count - 1 do begin {循环提取图标} ico.Handle := ExtractIcon(HInstance, PChar(FilePath), i); {画出图标} Canvas.Draw(x,y,ico); {下面只是调整显示位置} if w < ico.Width then w := ico.Width; if h < ico.Height then h := ico.Height; x := x + ico.Width + 10; if x >= ClientWidth - w then begin x := 10; y := y + h + 10; end; end; ico.Free; end; end.
//效果图:


本文转载自:http://www.cnblogs.com/del/archive/2008/02/15/1070115.html

共有 人打赏支持
涂孟超
粉丝 12
博文 2004
码字总数 14107
作品 0
深圳
程序员
Qt应用程序的发布,exe文件图标设置

1.Qt应用程序的发布 首先需要以release方式编译应用程序,将编译好的程序文件复制到发布文件夹。 其次将以下动态链接库复制到发布文件夹中:mingwm10.dll、QtCore4.dll、QtGui4.dll。可以从“...

mjrao ⋅ 2012/11/22 ⋅ 0

Inno Setup 制作jar转EXE文件的安装包 之权限、图标、卸载菜单的问题

·怎么给在开始菜单中增加卸载快捷方式? 在相应节点下,添加以下代码 ·怎么自定义卸载图标? (例中卸载图标名字为:uninstallico.ico) 下载一个UpdateIcon.dll放在同一个文件夹下(JAR、脚...

周田 ⋅ 2016/07/08 ⋅ 0

玩转Autorun.inf

我们已经知道可以利用Aurorun.inf来指定光盘自动加载的图标和运行的文件,其实Autorun.inf的用处可大了,下面就向大家详细介绍有关Autorun.inf的应用。    了解Autorun.inf    什么是Aut...

浣熊干面包 ⋅ 2009/01/17 ⋅ 0

Pyinstaller使用

Pyinstaller使用 人生苦短,我用python。 工作需要,使用Pyinstaller打包python程序为单文件exe。 看下面pyinstaller命令: 首先看,我用到了PyQt5的库,所以我把这个路径加进去,否则是找不...

容我三思兮 ⋅ 2017/09/19 ⋅ 0

[发布] Photoshop ICO 文件格式插件 V2.0版

    [更新预告] 我正在开发 ICO 插件的 3.0 版本。增加了新的比原来更好的缩放算法。同时将改进一些 UI。预计 2017 年 6 ~ 7 月可以发布。2017 年 6 月 11 日。     【声明】此插件下...

hoodlum1980 ⋅ 2010/12/29 ⋅ 0

Python进阶(四十七)-python3使用pyinstaller实现将py文件打包成exe文件

Python进阶(四十七)-python3使用pyinstaller实现将py文件打包成exe文件 前言   py文件通常需要运行在Python编程坏境中,而可执行exe文件更方便。   之前看过若干博文在python2环境下使用...

sunhuaqiang1 ⋅ 2017/04/25 ⋅ 0

VBS学习--创建桌面快捷方式

Icons这一可选段定义所有创建在开始菜单和或其它位置 (比如桌面) 的快捷方式。一个例子如下: [setup] ;全局设置,本段必须 AppName=Test AppVerName=TEST DefaultDirName="E:TEST" AppVers...

长征2号 ⋅ 2017/08/19 ⋅ 0

Qt发布和打包软件

三、发布程序 1.查看工程目录 这里会发现多了一个helloworld-build-desktop-Qt481481_目录,里面存放的就是编译生成的文件。这就是前面创建项目讲到的 “使用影子构建” ,如果没有选中这个,...

itfanr ⋅ 2013/07/23 ⋅ 1

py2exe打包在Windows7上的图标问题

最近开始学习Python,不禁被他的强大折服。 不过在Linux上写出来的一些小工具总是需要分享给其他人使用的,尤其是在没有安装Python解释器的Win平台上。于是就出现了一系列打包工具,最近发现...

雪色梦貘 ⋅ 2014/04/21 ⋅ 0

编译lua on windows in vc6命令行

windows lua编译 关于luabinaries luabinaries是http://sourceforge.net/上的一个项目,主要功能是集合lua各个版本的二进制文件。我下载的windows二进制文件包括(lua52.dll lua52.exe luac5...

non ⋅ 2013/04/10 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

CENTOS7防火墙命令记录

安装Firewall命令: yum install firewalld firewalld-config Firewall开启常见端口命令: firewall-cmd --zone=public --add-port=80/tcp --permanent firewall-cmd --zone=public --add-po......

cavion ⋅ 56分钟前 ⋅ 0

【C++】【STL】利用chromo来测量程序运行时间与日志时间打印精确到微秒

直接上代码吧,没啥好说的。头疼。 #include <iostream>#include <string>#include <ctime>#include <sstream>#include <iomanip>#include <thread>#include <chrono>using ......

muqiusangyang ⋅ 59分钟前 ⋅ 0

Mac环境下svn的使用

在Windows环境中,我们一般使用TortoiseSVN来搭建svn环境。在Mac环境下,由于Mac自带了svn的服务器端和客户端功能,所以我们可以在不装任何第三方软件的前提下使用svn功能,不过还需做一下简...

故久呵呵 ⋅ 今天 ⋅ 0

破解公司回应苹果“USB限制模式”:已攻破

本周四,苹果发表声明称 iOS 中加入了一项名为“USB 限制模式”的功能,可以防止 iPhone 在连接其他设备的时候被破解,并且强调这一功能并不是针对 FBI 等执法部门,为的是保护用户数据安全。...

六库科技 ⋅ 今天 ⋅ 0

MyBtais整合Spring Boot整合,TypeHandler对枚举类(enum)处理

概要 问题描述 我想用枚举类来表示用户当前状态,枚举类由 code 和 msg 组成,但我只想把 code 保存到数据库,查询处理,能知道用户当前状态,这应该怎么做呢?在 Spring 整合MyBatis 的时候...

Wenyi_Feng ⋅ 今天 ⋅ 0

synchronized与Lock的区别

# <center>王梦龙的读书笔记第一篇</center> ## <center>-synchronized与Lock的区别</centre> ###一、从使用场景来说 + synchronized 是能够注释代码块、类、方法但是它的加锁是和解锁使用一......

我不想加班 ⋅ 今天 ⋅ 0

VConsole的使用

手机端控制台打印输出,方便bug的排查。 首先需要引入vconsole.min.js 文件,然后在文件中创造实例。就能直接使用了。 var vConsole = new VConsole(); vConsole的文件地址...

大美琴 ⋅ 今天 ⋅ 0

Java NIO之字符集

1 字符集和编解码的概念 首先,解释一下什么是字符集。顾名思义,就是字符的集合。它的初衷是把现实世界的符号映射为计算机可以理解的字节。比如我创造一个字符集,叫做sex字符集,就包含两个...

士别三日 ⋅ 今天 ⋅ 0

Spring Bean基础

1、Bean之间引用 <!--如果Bean配置在同一个XML文件中,使用local引用--><ref bean="someBean"/><!--如果Bean配置在不同的XML文件中,使用ref引用--><ref local="someBean"/> 其实两种......

霍淇滨 ⋅ 今天 ⋅ 0

05、基于Consul+Upsync+Nginx实现动态负载均衡

1、Consul环境搭建 下载consul_0.7.5_linux_amd64.zip到/usr/local/src目录 cd /usr/local/srcwget https://releases.hashicorp.com/consul/0.7.5/consul_0.7.5_linux_amd64.zip 解压consu......

北岩 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部