用DELPHI调用外部程序的问题(50分)

  • 主题发起人 主题发起人 心心
  • 开始时间 开始时间

心心

Unregistered / Unconfirmed
GUEST, unregistred user!
在DELPHI中调用A.EXE和B.EXE两个文件我想在A.EXE运行结束后才运行B.EXE.该如何做?望各位指教.
 
winexec(...."a.exe".);
winexec(...."b.exe".);
 
starlyq说的不错,但亦可用宏命令用DDE调用,也可通过winsight对程序控制!
 
If you have installed RxLib(http://www.rxlib.com/ with source), you can(It will run B.EXE while A.EXE is end.):

uses
RXShell;
{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
const
PathAExe=...;
PathBExe=...;
begin
if FileExecuteWait('A.EXE', '', PathAExe, esNormal)=-1 then
ShowMessage('Can not start A.EXE')
else
FileExecuteWait('B.EXE', '', PathBExe, esNormal);
end;
 
winexec(...)或用API函数ShellExecute(....);
 
假如执行的exe文件如果既有路径又有参数(就象是dos下的 arj -e c:/a.txt
d:/b.arj <注意路径换了、文件名也换了>),诸位大家继续深入探讨一下如何?
如果哪位大虾解决了此问题给出思路,本人愿给100分相赠,给出原代码,200分
,决不食言!
 
var
S1,S2:string;
begin
...
S1:='-e c:/a.txt ';
S2:='d:/b.arj';
ShellExecute
(handle,nil,PChar'../arj '+S1+S2)),nil,nil,sw_ShowNormal);
...
end;
 
Run Arj:
if ShellExecute(handle,'Open','arj.exe','a -r gfgc data',
PChar(ExtractFileDir(Application.ExeName)),SW_HIDE)<32 then
begin
Application.Messagebox('找不到Arj.exe!','备份',MB_OK);
exit
end;
 
to
LeonSu,Crab:两位去下面写几个字,若我按照你们的方法成功,我好给你们分.
尽管如此,仍要多谢!
http://www.gislab.ecnu.edu.cn/delphibbs/DispQ.asp?LID=278966
 
各位,Calvin说的方法成功了,具体RxLib中的函数写法我还没有细看但此方法可以成功,所以,只好给Calvin加分了。
 
接受答案了.
 
后退
顶部