首页 > 其他分享 >资源文件:获取 EXE、DLL 或 ICO 文件中的图标

资源文件:获取 EXE、DLL 或 ICO 文件中的图标

时间:2023-05-18 17:33:19浏览次数:44  
标签:文件 EXE end FilePath 10 ico ICO 图标

//声明:
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.

标签:文件,EXE,end,FilePath,10,ico,ICO,图标
From: https://www.cnblogs.com/lucken2000/p/17412604.html

相关文章

  • 利用python解析log日志,json文件,配置文件。
    对于喜欢偷懒的我来说,重复同样的工作是很令人头疼的事情,总想找到一条捷径,最好是一劳永逸。本次跟大家分享的是对log日志,json文件以及配置文件的解析,读取。首先是log日志的读写:读取数据:f=open("spring05注意事项.txt",mode='r',encoding='utf-8')line=f.readline()whileline......
  • 资源文件:嵌入和提取任何类型的文件(转)
    //下面是Windows支持的资源格式:RT_CURSOR   =MakeIntResource(1);RT_BITMAP   =MakeIntResource(2);RT_ICON    =MakeIntResource(3);RT_MENU    =MakeIntResource(4);RT_DIALOG   =MakeIntResource(5);RT_STRING   ......
  • web页面展示PDF文件
    简单展示PDF1.下载pdf.js插件<scriptsrc='https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.6.172/pdf.min.js'></script>2.解析PDF文件渲染为canvasconstpdfjsLib=window.pdfjsLibpdfjsLib.getDocument('path/demo1.pdf').promise......
  • js下载pdf文件
    //点击下载文件参数href:下载地址,参数filename:文件名(可自定义文件名)```downloadFile(href,fileName){//获取heads中的filename文件名leta=document.createElement("a");a.style.display="none";//给a标签创建下载的链接a.href=href;//下载后文件名a.downloa......
  • SpringBoot中实现文件上传下载的三种解决方案(推荐)
    ​ 我们平时经常做的是上传文件,上传文件夹与上传文件类似,但也有一些不同之处,这次做了上传文件夹就记录下以备后用。这次项目的需求:支持大文件的上传和续传,要求续传支持所有浏览器,包括ie6,ie7,ie8,ie9,Chrome,Firefox,360安全浏览器,并且刷新浏览器后仍然能够续传,重启浏览器(关闭......
  • 通过java执行导出命令,导出dup数据文件到指定位置
    /***1.通过java执行导出命令,导出dup数据文件到指定位置*2.清空表数据,为下一次解析准备*/publicvoidexpDupDataByJaveProcess(){booleansuccess=true;//导致是否成功标识,成功修改为falseStringcmdSql="";//导出命令语句......
  • SpringBoot02_Mybatis和配置文件
    关于本文的大体框架在上一篇博客一、SpringBoot整合Mybatis(一)配置文件​ 引入springboot与mybatis整合包以及java-connector<dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><versi......
  • 宝塔面板删除文件后,磁盘占用比例显示一直没变化,可能是删除文件后缓存没有释放导致
    问题描述:linux磁盘空间太少,删除了不必要的文件和缓存后,宝塔面板磁盘使用率没变化,如下图: 解决方法:1.重启服务器2.登录linux界面:2.1、使用df-h和du-sh/*命令查看磁盘空间,查看磁盘情况 du-sh./查看的当前目录的总大小 du-sh./*查看的是当前目录下所有子文件与子......
  • SpringMVC中实现文件上传下载的三种解决方案(推荐)
    ​ 这里只写后端的代码,基本的思想就是,前端将文件分片,然后每次访问上传接口的时候,向后端传入参数:当前为第几块文件,和分片总数下面直接贴代码吧,一些难懂的我大部分都加上注释了:上传文件实体类:看得出来,实体类中已经有很多我们需要的功能了,还有实用的属性。如MD5秒传的信息。pub......
  • [转载]lsattr -I -e 文件扩展属性的一些解释
    排查时遇到的问题此文章做出了一些解答,转载以作为记录,源文章地址https://blog.systemctl.top/2017/2017-04-14_something-about-lsattr_-i_-e/1.如图e是什么?I又代表什么?这个问题我觉得不是个难问题,简单man下就出来了,可问题来了,更多的系列问题更是随之而来…manlsattr......