Delphi如何把资源文件释放到指定位置并运行?

有A.exe和B.exe两个文件,如何制作成资源文件加入到Delphi主程序C.exe中,C.exe中有个确定按钮,通过点击确定按钮,把A和B两个文件释放到C:\User... 有A.exe和B.exe两个文件,如何制作成资源文件加入到Delphi主程序C.exe中,C.exe中有个确定按钮,通过点击确定按钮,把A和B两个文件释放到C:\Users\cdko\Local Settings\Temp下并运行,
(路径要能自动识别,也就是说,要不管是XP还是WIN7系统,不管引导盘在C或D还是别的盘,不管用户是张三还是李四,都能正确判断出并且把文件释放到该目录并运行.类似安装程序那样,总是能把临时文件放到临时目录下运行.)
求高手给出详细实现代码,在线急等,谢谢!
求解
展开
 我来答
HJ_3000
2012-08-20 · TA获得超过563个赞
知道小有建树答主
回答量:1264
采纳率:78%
帮助的人:45.6万
展开全部
1:资源文件制作:
创建一文本文件,重命名:XXX.RC。
用记事本打开该文件,写2行:
File0 Temp A.exe
File1 Temp B.exe
保存文件,A.exe 和 B.exe 和XXX.RC 在同一文件夹。

2:加入资源,在C.exe的工程里,加入RC(资源)文件:
菜单 -> project -> add to project -> 文件类型选择*.RC -> 选择刚才做好的XXX.RC。
编译C.exe这个工程。

3:释放
Unit Unit1;
Interface
Uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
Type
TForm1 = Class(TForm)
Procedure FormCreate(Sender: TObject);
Private
{ Private declarations }
Public
{ Public declarations }
End;
Var
Form1: TForm1;
Implementation
Uses ShellAPI;
{$R *.dfm}
Function File_Get_Res(Const aFile, ResName, ResType: String): Boolean;
Begin
Result := False;
Try
With TResourceStream.Create(HInstance, ResName, PChar(ResType)) Do
Begin
Try
If FileExists(aFile) Then
Begin
DeleteFile(aFile);
End;
If Not FileExists(aFile) Then
Begin
SaveToFile(aFile);
Result := FileExists(aFile);
End;
Finally
Free;
End;
End;
Except
Result := False;
End;
End;
Function Path_Temp: String; // 临时目录
Var
aDir: Array[0..MAX_PATH - 1] Of Char;
Begin
GetTempPath(max_path, aDir);
Result := Trim(IncludeTrailingPathDelimiter(aDir));
End;
Procedure TForm1.FormCreate(Sender: TObject);
Var
aFile, bFile: String;
Begin
//File0 Temp A.exe
aFile := Format('%s%s', [Path_Temp, 'AAA.exe']); //释放到哪里? 文件名可自定义
If File_Get_Res(aFile, 'File0', 'temp') Then
Begin
ShellExecute(Handle, 'Open', Pchar(aFile), Nil, Nil, SW_NORMAL);
End;
//File1 Temp B.exe
bFile := Format('%s%s', [Path_Temp, 'BBB.exe']);
If File_Get_Res(bFile, 'File1', 'temp') Then
Begin
ShellExecute(Handle, 'Open', Pchar(bFile), Nil, Nil, SW_NORMAL);
End;
End;
End.
更多追问追答
追问
谢谢您的热心解答,按照你的方法制作好了资源文件,也把你的代码我复制进去试运行,能正常运行,但是在临时目录没发现有释放文件呢,也没有程序运行.我的意思路是,释放A和B到临目录,然后运行A或B文件.能不能再解答下,谢谢!
追答
那你把文件释放到C:\下试试。
Function Path_Temp: String; // 临时目录
//Var
//aDir: Array[0..MAX_PATH - 1] Of Char;
Begin
//GetTempPath(max_path, aDir);
//Result := Trim(IncludeTrailingPathDelimiter(aDir));
Result := 'c:\';
End;
syht2000
高粉答主

2012-08-18 · 关注我不会让你失望
知道大有可为答主
回答量:3万
采纳率:79%
帮助的人:1.4亿
展开全部
系统的环境变量temp就是用来记录临时目录的,你只要用 GetEnvironmentVariable('temp')取到就可以了。至于怎么释放,你百度上搜索delphi 释放 资源文件,第二个链接就是。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式