文档章节

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

涂孟超
 涂孟超
发布于 2014/09/26 15:35
字数 279
阅读 14
收藏 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
博文 2011
码字总数 14107
作品 0
深圳
程序员
私信 提问
Inno Setup 制作jar转EXE文件的安装包 之权限、图标、卸载菜单的问题

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

周田
2016/07/08
50
0
玩转Autorun.inf

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

浣熊干面包
2009/01/17
0
0
VBS学习--创建桌面快捷方式

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

长征2号
2017/08/19
0
0
[发布] Photoshop ICO 文件格式插件 V2.0版

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

hoodlum1980
2010/12/29
0
0
Python进阶(四十七)-python3使用pyinstaller实现将py文件打包成exe文件

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

sunhuaqiang1
2017/04/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

前嗅ForeSpider教程:采集黄页88

以黄页88为例,采集当前列表页新闻的正文数据: 第一步:新建任务 ①点击左上角“加号”新建任务,如图1: 【图1】 ②在弹窗里填写采集地址,任务名称,如图2: 【图2】 ③点击下一步,选择进...

forespider
14分钟前
1
0
Spring Cloud Alibaba基础教程:Nacos 生产级版本 0.8.0

昨晚Nacos社区发布了第一个生产级版本:0.8.0。由于该版本除了Bug修复之外,还提供了几个生产管理非常重要的特性,所以觉得还是有必要写一篇讲讲这次升级,在后续的文章中也都将以0.8.0版本为...

程序猿DD
22分钟前
1
0
HTML+CSS实现div的高度自适应填满剩余空间的7种方法

如图上下两部分,上面部分适应内容的高度,下面部分填充剩余部分。 当下面内容不够时,在下面部分出现滚动条 有2种情况 1.上面内容的高度适应内容,只有2种方法(flex、quirks+table) 2.上面...

linsk1998
26分钟前
1
0
Oracle学习日志-8(查询结果排序)

要用到的表如下 书上写到,上面的查询结果排序是随机的,再执行几次结果可能不同,但是我执行多次后,查询结果的排序都是如此,是因为oracle的默认处理方式是按照物理储存顺序查询的,而我在...

白话
33分钟前
1
0
Data truncation: Incorrect datetime value: '0000-00-00 00:00:00' for column xxx

1. 错误提示 Data truncation: Incorrect datetime value: '0000-00-00 00:00:00' for column xxx 2. 问题分析 从上面的描述我们可以看出原因是:我们给类型是datetime的xxx字段赋值0000-00......

易冥天
35分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部