首页 > 其他分享 >资源文件:嵌入和提取任何类型的文件(转)

资源文件:嵌入和提取任何类型的文件(转)

时间:2023-05-18 17:22:45浏览次数:32  
标签:RT 文件 嵌入 提取 rs Windows RCDATA exe MakeIntResource

//下面是 Windows 支持的资源格式:
RT_CURSOR       = MakeIntResource(1);
RT_BITMAP       = MakeIntResource(2);
RT_ICON         = MakeIntResource(3);
RT_MENU         = MakeIntResource(4);
RT_DIALOG       = MakeIntResource(5);
RT_STRING       = MakeIntResource(6);
RT_FONTDIR      = MakeIntResource(7);
RT_FONT         = MakeIntResource(8);
RT_ACCELERATOR  = MakeIntResource(9);
RT_RCDATA       = Types.RT_RCDATA; //MakeIntResource(10);
RT_MESSAGETABLE = MakeIntResource(11);
   DIFFERENCE   = 11;
RT_GROUP_CURSOR = MakeIntResource(DWORD(RT_CURSOR + DIFFERENCE));
RT_GROUP_ICON   = MakeIntResource(DWORD(RT_ICON + DIFFERENCE));
RT_VERSION      = MakeIntResource(16);
RT_DLGINCLUDE   = MakeIntResource(17);
RT_PLUGPLAY     = MakeIntResource(19);
RT_VXD          = MakeIntResource(20);
RT_ANICURSOR    = MakeIntResource(21);
RT_ANIICON      = MakeIntResource(22);

//尽管 Windows 规定 RCDATA 用作自定义格式, 我们也可以自定义格式名称, 譬如本例(rc 文件):
MyFile1 RCDATA "c:\Windows\system32\notepad.exe"
MyFile2 MyRes "c:\Windows\System32\calc.exe"

{上面把 notepad.exe 时指定为 RCDATA 格式; 把 calc.exe 就指定成了自定义的 MyRes 格式}

//本例在资源中嵌入了记事本和计算器, 然后提取并调用:

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
  rs: TResourceStream;
begin
  rs := TResourceStream.Create(HInstance, 'MyFile1', RT_RCDATA);
  rs.SaveToFile('c:\temp\pad.exe');
  WinExec('c:\temp\pad.exe', 1);
  rs.Free;
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  rs: TResourceStream;
begin
  rs := TResourceStream.Create(HInstance, 'MyFile2', 'MyRes');
  rs.SaveToFile('c:\temp\sum.exe');
  WinExec('c:\temp\sum.exe', 1);
  rs.Free;
end;

end.

标签:RT,文件,嵌入,提取,rs,Windows,RCDATA,exe,MakeIntResource
From: https://www.cnblogs.com/lucken2000/p/17412557.html

相关文章

  • 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......
  • Linux文件管理
    进入linux世界Linux文件管理在Linux中/代表根目录打开Linux命令行sudo-s#进入root用户模式,仍在原来目录下(不要用su-root,否则进入root目录了)改变目录cd绝对路径或者相对路径移动到指定的文件夹打印pwd打印出当前所在的目录列出目录内容ls列出目录内容ls-l参数详细的显示出......
  • Golang - viper读取配置文件
    一、介绍Viper是一个方便Go语言应用程序处理配置信息的库。它可以处理多种格式的配置。它支持的特性:设置默认值从JSON、TOML、YAML、HCL和Javaproperties文件中读取配置数据可以监视配置文件的变动、重新读取配置文件从环境变量中读取配置数据从远端配置系统中读取数据,并......