相关疑难解决方法(0)

如何从图标中提取特定大小的图像?

如何从具有多个图像的图标中提取特定尺寸的图像或所有图像?

delphi delphi-2010

8
推荐指数
1
解决办法
3200
查看次数

不使用ExtractIconEx从EXE中提取所有图标

我需要从EXE中提取所有图标并将它们保存为磁盘文件,但我无法使用最简单的解决方案(ExtractIconEx),因为我需要以保留大尺寸图标的方式提取ICO文件,即使代码运行在运行Windows XP的系统上.我稍后会使用其他代码提取想要的图标(128x128和其他vista大小图标),但我需要一种方法来提取所有图标,包括它们在EXE中存在的所有资源,无论我的代码是否运行PC on正在运行XP,Vista或Win7.

到目前为止,我知道图标在RT_GROUP_ICONS中.

我知道有些人之前必须在Delphi中这样做,因为像IcoFX和resource-explorer这样的实用程序似乎已经这样做了.我曾经记得看到一个完全开源的Delphi工具可以做到这一点,但它是在几年前.

重述我使用ExtractIconEx的问题 - 它不会访问整个.ico文件,它只会提取支持的图标资源格式,这是平台支持的单一分辨率(大小).因此,在XP上,它将提取32x32或48x48图标,但不提取Vista格式的128x128图标.

更新:这是已接受答案的修改版本,解决了我未来的担忧.如果我们调用的函数以某种方式在未来的Windows版本中从User32.dll中消失,我希望它更优雅地失败,而不是加载我的整个应用程序.

unit ExtractIconUtils;

interface

uses Graphics,Forms,Windows;

//----------------------------------------------------------------------------
// ExtractIcons
// Call "private" MS Api to extract Icon file. This calls a publically
// documented function marked as deprecated in the MSDN documentation.
// It was no doubt Not Originally Intended to be documented, or publically
// accessed, but it provides functionality that its hard to live without.
// It exists on Windows 2000, XP, Vista, and Windows7, …
Run Code Online (Sandbox Code Playgroud)

delphi resources icons

6
推荐指数
1
解决办法
7128
查看次数

标签 统计

delphi ×2

delphi-2010 ×1

icons ×1

resources ×1