就是等到外部程序执行完了,我的程序再继续执行
解决方案 »
- 对memo1中的数据进行查询
- Delphi Listviw 如何排序,可升,可降的
- 把Tfield 放进 Tobject中 只能保存最后一条记录的值?? 大家给我看看这段代码有什么问题啊,我为什么取不到我要的值
- 求助:一个form中有大量数据需要录入,有七八十个之多
- 谁做过lf300的收款机接口编程
- 軟設考試題(三)
- 请问如何在Delphi中如何调用SQLServer中的系统存储过程!
- 一个类型转换的问题
- 李维<delphi和分布式多层应用系统第一个例子我碰到到问题,,,,
- 怎样得到TQUERY记录集的当前行,RecNo返回是0
- 我导入MSHFlexGrid控件时,就出错。为什么?
- 怎样同步执行一个外部exe文件
var
StartInfo:STARTUPINFO;
ProcessInfo:PROCESS_INFORMATION;
begin
//执行外部程序,失败返回0,成功返回进程句柄
Result:=0;
if ProgramName='' then exit;
GetStartupInfo(StartInfo);
StartInfo.dwFlags:=StartInfo.dwFlags or STARTF_FORCEONFEEDBACK;
if not CreateProcess(nil,PChar(ProgramName),nil,nil,false,0,
nil,nil,StartInfo,ProcessInfo) then exit;
Result:=ProcessInfo.hProcess;
//建立进程成功
//如果异步执行则退出
if not wait then exit;
while IsProgram_Runing(Result) do Application.ProcessMessages;
end;function IsProgram_Runing(hProcess:Cardinal):Boolean;
var
ExitCode:Cardinal;
begin
//查看进程是否正在运行
GetExitCodeProcess(hProcess,ExitCode);
if ExitCode=STILL_ACTIVE then
Result:=True
else
Result:=False;
end;
同步调用方法 RunProgram('c:\aa.exe',true);参考IsProgram_Runing函数,你也可以RunProgram('c:\aa.exe');先异步执行,然后根据返回的进程句柄,自己判断程序是否执行结束。