下面是两个函数,用来执行一个外部程序,缺省是异步执行 
同步调用方法 RunProgram('c:\aa.exe',true); 
参考IsProgram_Runing函数,你也可以调用RunProgram('c:\aa.exe')先异步执行,然后根据返回的进程句柄,自己判断程序是否执行结束。 
// 异步执行
function RunProgram(ProgramName:string;Wait:Boolean=False):Cardinal; 
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); 
Result := ExitCode=STILL_ACTIVE 
end;

转载于:https://www.cnblogs.com/kaibosoft/p/4039190.html

delphi中等待外部应用程序执行完成后,再继续执行自有代码段相关推荐

  1. CDR插件开发之CPG插件018 - 在CPG插件中调用外部EXE程序并传递参数

    在上篇文章中,讲解了CPG插件在VS2019中实现调试的具体方法.本文以具体代码为例,讲解在CPG插件中调用外部EXE程序,并传递运行参数的方法. 工程搭建准备 按照惯例,本篇文章的序号为018,请直 ...

  2. 怎么保证在多线程任务都执行完后再执行某一动作 CountDownLatch

    在开发过程当中,我们使用了多线程来异步执行多任务,但是我们想在这些任务执行完成后,才接着再执行的话,就需要使用到CountDownLatch这个类了. 首先我们需要知道被执行任务的个数,比如这里是有2 ...

  3. SpringMVC--Ajax异步加载数据$(function (){ 逻辑代码}) 的意思是让dom结构加载完毕后再去执行逻辑代码

    1. SpringMVC–Ajax异步加载数据 1.1 实体类user User.java package com.tian.pojo;import lombok.AllArgsConstructor ...

  4. JavaScript--JQuery事件 当网页元素加载完成后再去执行事件

    1. JQuery事件 JQuery帮助文档: 这里的selector都是CSS选择器的语法 CSS选择器 示例1 弹出提示框: <!DOCTYPE html> <html lang ...

  5. 在Delphi中调用外部DLL 之External DLL 导入DLL

    调用一个DLL比写一个DLL要容易一些.首先给大家介绍的是静态调用方法,稍后将介绍动态调用方法,并就两种方法做一个比较.同样的,我们先举一个静态调用的例子. unit Unit1;interfaceu ...

  6. 微信小程序 app.js中onLaunch中方法执行完毕后再执行index首页数据请求

    实际开发中遇到在app.js中onlaunch中方法未执行完毕的情况下,先进入首页执行index方法的问题.如果在onlaunch中写了自动登录的方法,会存在首页加载时显示未登录的情况(此时onlau ...

  7. c#中等待某个线程执行完后再执行某个线程

    在方法的外部申请一个这样的变量 CountdownEvent latch = new CountdownEvent(3); 比如现在执行的是方法a public void a() { int si=0 ...

  8. 异步执性两个线程,两个线程执行完毕后再进行其他操作

    如果想要快速高效地实现上述需求,可以考虑用队列组 dispatch_group_t group =  dispatch_group_create(); dispatch_group_async(gro ...

  9. VS 安装部署项目自解压程序解压后按顺序执行多个程序

    这篇blog介绍了如何用VS创建安装部署方案,以及如何制作自解压程序.然后我的程序中需要解压后按照顺序先后安装2个exe.winrar的解压后执行,虽然可以用分号填写多个应用,但貌似是同时执行的.为了 ...

最新文章

  1. python函数编程求三个数的最小公倍数_Python求三个数的最小公倍数
  2. 《大话数据结构》第9章 排序 9.1 开场白
  3. 七天来学习ASP.NET MVC (两)——ASP.NET MVC 数据传输
  4. NTP时间服务器实现Linux时间同步
  5. 云服务器主机性能测试,云服务器主机性能测试
  6. python 打印xml文档树_Python构建XML树结构的方法示例
  7. 桌面时钟代码_被遗忘的手机桌面小部件
  8. 页面嵌入Windows Media Player需要注意的
  9. 特斯拉起诉小鹏汽车员工窃取 30 多万份商业机密,何小鹏回应
  10. keycode值列表
  11. matlab分析xml文件_如何在Java中读取XML文件(DOM分析器)
  12. php 字符编码转换
  13. 项目管理过程组-十五至尊图
  14. Java——(九)IO流
  15. 操作系统 进程调度实验报告
  16. windows保护无法启动修复服务器,win10使用命令修复系统时提示Windows 资源保护无法启动修复服务怎么办...
  17. 数学杂记(1)一些无处安放的数学推导
  18. html多张图片合在一块,多张照片怎么拼在一起?10张以上多图拼图方法 超简单! (全文)...
  19. 2022 上半年 FDA 小分子药物盘点 - MedChemExpres
  20. 无爬虫团队,企业如何实现1000万级数据采集?

热门文章

  1. 第十六届全国大学生智能汽车竞赛 讯飞智慧餐厅 全国总决赛竞赛规则
  2. 强度光照模块rimg02 BH1750光度传感器模块
  3. 广义互相关计算TDOA
  4. 2020年春季学期信号与系统课程作业参考答案-第十次作业
  5. 车模换几代了,电池什么时候换?
  6. java继承 映射_hibernate继承关系映射和java反射机制的运用
  7. centos linux引导修复_CentOS没了,Linux的新世界来了
  8. soundex mysql_MySQL SOUNDEX()用法及代码示例
  9. python与数据思维基础目录_python入门知识思维路线图及环境配置
  10. 硬盘突然提示没有初始化_分享一下固态硬盘不认盘的修复方法