阅读 106

delphi将文件资源打包到exe中

一开始没有集成到exe单文件里的时候我用的笨方法CopyFile(pchar(‘SYSlanhai.dll‘), pchar(‘SYSManage.exe‘), False); //复制文件
这样,有多个文件的时候很不方便,集成到exe里简单、稳定、速度快。

过程:

  1. 创建一个文本文件,然后将资源文件按照如下格式填写:a b demo.DLL (名字随便起中间有空格,demo.DLL这个跟资源名称要对应)然后将文本文件保存为‘文件名.rc‘格式(不会?自己百度吧.我这里保存的是demo.rc)。

  2. 将资源文件demo.DLL与保存的这个demo.rc一起保存到Brcc32.EXE所在目录。(我的是:C:\Program Files (x86)\Embarcadero\Studio\20.0\bin)

  3. 点开始-运行,输入cd/返回到根目录,然后cd 进入C:\Program Files (x86)\Embarcadero\Studio\20.0\bin 这个路径。运行:“Brcc32.exe demo.rc(回车)”会在其目录生成一个上图标识5的。demo.res的文件。

  4. 将这个demo.res文件复制到你delphi 工程所在的目录。然后引用资源方法如下:{$R demo.RES}

附:源码

unit Unit2;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs,
  Vcl.StdCtrls, Vcl.ExtCtrls;

type
  TForm2 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
    procedure Timer1Timer(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form2: TForm2;

implementation

{$R *.dfm}
{$R demo.RES}
 function ExtractRes(ResName,ResType, ResNewName: string): boolean;   //释放资源文件
var
    Res: TResourceStream;
begin
    try
        Res := TResourceStream.Create(Hinstance, Resname, Pchar(ResType));
        try
            Res.SavetoFile(ResNewName);
            Result := true;
        finally
            Res.Free;
        end;
    except
        Result := false;
    end;
end;
procedure TForm2.FormCreate(Sender: TObject);
begin
  //DeleteFile(‘SYSManage.exe‘);

 // CopyFile(pchar(‘SYSlanhai.dll‘), pchar(‘SYSManage.exe‘), False);    //复制文件
 if  ExtractRes(‘a‘,‘b‘,‘SYSManage.exe‘) then
 ShowMessage(‘注册文件成功‘);

end;

procedure TForm2.FormDestroy(Sender: TObject);
begin
  winexec(‘SYSManage.exe‘, 0);      //运行外部exe
end;

procedure TForm2.Timer1Timer(Sender: TObject);
begin
  close;
end;

end.

/```

原文:https://www.cnblogs.com/lanhai2020/p/13380341.html

文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐