求教在delphi中,如何把一个exe做为res加入到dll中,并在运行时生成exe文件执行
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求教在delphi中,如何把一个exe做为res加入到dll中,并在运行时生成exe文件执行相关的知识,希望对你有一定的参考价值。
要具体的操作,详细的,完整,可以调试成功的程序。
我是一个机械模具专业的delphi初学者。
谢谢大家。
第二:准备资源:
建立一个资源文件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查找一下
以上是关于求教在delphi中,如何把一个exe做为res加入到dll中,并在运行时生成exe文件执行的主要内容,如果未能解决你的问题,请参考以下文章
求教在delphi中,如何把两个exe做为res加入到另一个exe中,并在运行时释放两个exe