求教在delphi中,如何把一个exe做为res加入到dll中,并在运行时生成exe文件执行

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教在delphi中,如何把一个exe做为res加入到dll中,并在运行时生成exe文件执行相关的知识,希望对你有一定的参考价值。

要具体的操作,详细的,完整,可以调试成功的程序。

我是一个机械模具专业的delphi初学者。

谢谢大家。

第一:准备exe程序 a.exe
第二:准备资源:
建立一个资源文件myRes.rc,内容如下:
MyExe EXE a.exe

第三:编译资源
进入DOS,运行 brcc32 myRes.rc;
这时编译出资源:myRes.RES

第四:
创建dll文件,代码如下:
library Project1;
uses
SysUtils,
Classes,dialogs,
common in 'common.pas';

$R *.res
$R myRes.RES

exports
loadDll;

begin
releaseExe();
end.

unit common;
interface
uses
Classes,Windows,SysUtils,dialogs;

function FileResourceToLocalFile(Instance:Cardinal;ResName,ResType,sFileToSaved:String):boolean;
procedure releaseExe();
procedure loadDll();

implementation

function FileResourceToLocalFile(Instance:Cardinal;ResName,ResType,sFileToSaved:String):boolean;
Var
FileStream:TFileStream;
ResourceStream:TResourceStream;
Begin
result:=true;
Try
Try
ResourceStream:=TResourceStream.Create(Instance,ResName,Pchar(ResType));
ResourceStream.SaveToFile(sFileToSaved);
Except
On E:Exception Do
Begin
result:=false;
showMessage('生成本地资源文件失败:'+#13+#10+E.Message);
Exit;
end;
end;
Finally
ResourceStream.Free;
End;
End;

procedure releaseExe();
begin
if common.FileResourceToLocalFile(hInstance,'MyExe','EXE','target.exe') then
showMessage('exe程序已经释放:target.exe');
end;

procedure loadDll();
begin
showMessage('dll已经被调用');
end;

end.

第五:新建另一个工程,调用dll:
unit Unit1;

interface

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

type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
Private declarations
public
Public declarations
end;

var
Form1: TForm1;

procedure loadDll();external 'project1.dll';

implementation

$R *.dfm

procedure TForm1.Button1Click(Sender: TObject);
begin
loadDll();
end;

end.

ok了。
参考技术A 哇塞,我正需要这个,(*^__^*) 嘻嘻……,我跟你一起期待哈,哦哦哦

求教,关于VM虚拟机可否修改虚拟机里面硬盘的序列号?

高手帮忙看看,虚拟机里面的硬盘序列号查出来是一大串的0,请问能否修改虚拟机里面的硬盘序列号的?

你好。下面是在网上找的,不知道能不能帮上你!

vmware新建虚拟系统后默认的硬盘序列号都是空的,有些程序需要读取序列号,于是不得不自己来修改vmware硬盘序列号了,方法是网上找到的,来看看吧

1.把diskid.exe、hookDiskID.exe(这两个工具附后下载)拷贝到虚拟系统里,并运行diskid.exe可以查看虚拟磁盘的ID为00000000000000000001,然后运行hookDiskID.exe找到00000000000000000001对应的值为 3030303030303030303030303030303030303031。凡是新建立的虚拟IDE磁盘默认的ID都为 00000000000000000001

2.关闭虚拟系统,找到\VMware Workstation\bin\vmware-vmx.exe

3.WinHex打开vmware-vmx.exe ,记住在修改前请先备份

4.利用WinHex的查找功能查找00000000000000000001,其对应于3030303030303030303030303030303030303031

5.把3030303030303030303030303030303030303031修改为其他值并保存,在对应的字符那里修改,不要直接修改十六进制的数值,从后向前修改八个字符即可。

6.再次虚拟系统,系统会提示找到新的VMwareIDE磁盘,再次运行diskid.exe,发现磁盘ID已经由原来的00000000000000000001变成刚才修改的值。

注意:前两位不可以修改,这是由VMware公司设定的,用来确定为第一IDE接口的主控制器的标记。

参考资料:http://flyash.itcao.com/post_500.html

参考技术A

    这个问题在嗬2塘月色 论坛里 wy面有人提问过了,你可以去96查找一下

参考技术B 您到菏唐月色 论坛 看1看相关的技术吧 参考技术C 是因为软件注册码吧,VM TOOLS里好像有个工具。

以上是关于求教在delphi中,如何把一个exe做为res加入到dll中,并在运行时生成exe文件执行的主要内容,如果未能解决你的问题,请参考以下文章

求教在delphi中,如何把两个exe做为res加入到另一个exe中,并在运行时释放两个exe

把EXE可执行文件等作为资源包含在Delphi编译文件中

delphi 如何把其他exe文件加入dll中,并调用

在Delphi如何将exe文件加入到资源文件中,如何进行调用?

求教delphi 中fastreport报表的问题

delphi中资源文件调用