zoukankan      html  css  js  c++  java
  • 把EXE可执行文件等作为资源包含在Delphi编译文件中

    摘自我自己过去写的一段心得。

    1.编辑资源文件 *.RC
    Wave: 资源文件是声音文件;
    RCDATA: 二进制数据
    AVI: AVI动画;
    ICON: 图标文件;
    BITMAP: 位图文件;
    CURSOR: 光标文件;
    比如:
    MyWav WAVE "FileName.Wav"

    2.使用Brcc32转化为*.RES文件

    3.在工程中引用RES文件
    比如:{$R MyRes.RES}

    4.运行时读入
        通过TResourceStream ,比如TResourceStream.Create(HInstance, ResName, RT_RCDATA);
        API:LoadBitmap,LoadIcon等
        组件:Image1.Picture.Bitmap.LoadFromResourceName
    /////////////////////////////////////////////////////////
    把EXE可执行文件等作为资源包含在Delphi编译文件中2010/01/18 8:29 P.M.感觉还是挺有用的,转载保存了~~~  

    建立文本文件       TEST.RC       撰写下面的一行   
        
         AEXE     EXEFILE     c: est.exe   
        
         存盘   
        
         copy     test.rc     到你DELPHI目录里的     bin     目录   
        
         执行     brcc32     test.rc   
         得到     test.res   
        
         copy     test.res     到你的工程目录   
        
         记得在工程文件里加上     {$R     test.res}   
        
         提取RES中的TEST.EXE的函数   
        
         procedure     extractexeres(restype,     resname,     resnewname:string);   
         var     
             res:tresourcestream;     
         begin   
             res:=tresourcestream.create(hinstance,resname,pchar(resyype));   
             res.savetofile(resnewname);   
             res.free;     
         end;  

    建立文本文件       myjpg.RC       撰写下面的一行   
        
         Hash     JPGFILE     c:myjpg.jpg   
        
         存盘   
        
         copy     myjpg.rc     到你DELPHI目录里的     bin     目录   
        
         执行     brcc32     myjpg.rc   
         得到     myjpg.res   
        
         copy     myjpg.res     到你的工程目录   
        
         记得在工程文件里加上     {$R     myjpg.res}   
        
         提取RES中的MYJPG.jpg的函数   
        
         procedure     extractexeres(resname,     restype,     resnewname:string);   
         var     
             res:Tresourcestream;     
         begin   
             res:=Tresourcestream.create(hinstance,resname,pchar(restype));   
             res.savetofile(resnewname);   
             res.free;     
         end;   
         //这样你就可以调用resnewname这个     jpg文件了。   
         调用的时候如下:   
         Extractexeres('Hash','JPGFILE','f:myjpg.jpg');

    换一种说法:

    1、生成一个rc文件,文件格式如下:
         rwww exefile "test.exe"     //rwww是资源名称
                                   //exefile是资源类型
                                 //text.exe是资源
       资源类型列表:
       Wave:     资源文件是声音文件;  
       RCDATA:     一般二进制文件;  
       AVI:     AVI动画;  
       ICON:     图标文件;    
       BITMAP:     位图文件;    
       CURSOR:     光标文件; 
       exefile:   exe文件
       FILE:     一般文件  


    2、将delphi安装目录下bin中的brcc32.exe文件拷出,用brcc32.exe执行
         生成的rc文件,在dos窗口下 运行:brcc32 test.rc   生成正式的
         后缀为.res的次源文件

    3、在delphi中加入编译指令{$R test.res}用以编译。但注意,以上的test.exe文件
         一定要在当前路径下存在。

    4、调用:

           var
             t : TResourceStream;
           begin
             try
               t := TResourceStream.Create(HInstance,'rwww','exefile'); //其中HInstance为一个句柄常量;rwww为资源名;exefile为资源类型
               t.SaveToFile('c:2.exe'); //保存文件成2.exe
             finally

               t.free;
             end;
           end;
    ///////////////////////////////////////////////////////////
    编辑一个 resource.rc 文件 ,里面类似如下 :

      hookdll RC_Dll YourHookDllFileName.Dll

    2: 然后用 Brcc32.exe 编译 :

      brcc32 resource.rc

      结果生成 resource.res 文件

    3: 修改窗体 Pas 或者 Dpr 文件 ,添加下面的代码 :

      {$R *.res}

      {$R resource.res}

    4: 关键的代码 :

       在窗体初始化或者工程的开头部分添加代码 :

      var

       res:tresourcestream;

       ....

       res:=tresourcestream.create(instance,'hookdll','RC_Dll');

       res.SaveToFile('YourHookDllFileName.Dll');

       res.Free;

    5: 你的程序退出的时候 :

       DeleteFile('YourHookDllFile.Dll');

    6:End

    http://www.cnblogs.com/hssbsw/archive/2012/03/15/2397825.html

  • 相关阅读:
    路由 懒加载 错误ChunkLoadError: Loading chunk 10 failed.
    ngzorro create创建对话框 对话框组件内 关闭父组件 create对话框
    一个解决方案对dll的引用要注意的问题
    工作流的麻烦
    winform程序中使用documentview模式的考虑
    仿淘宝网评价的五角星投票代码
    图片闪烁代码
    JS+CSS仿淘宝滑过小图预览大图代码
    JavaScript控制图片左右播放的幻灯片代码
    JavaScript实现图片旋转构成3D圆环代码
  • 原文地址:https://www.cnblogs.com/findumars/p/6359764.html
Copyright © 2011-2022 走看看