使用Delphi启动和关闭外部应用程序

Delphi与Windows平台紧密结合,编译代码快速高效。作为一种可视化的面向对象开发工具,Delphi可以帮助程序员更轻松、更快速地编写各种Windows应用程序。而且通过编程可以方便地调用其它语言编写的动态库或应用程序,并在不需要时关闭这些外部程序。这一点对许多编程人员非常有用,例如,在采用Delphi进行软件开发的同时,可能需要调用以前采用其它工具开发的应用程序,以免再次重新编写代码,或者需要调用Windows中的记事本和计算器等工具,以便在程序运行过程中记录信息或进行计算等。

在Delphi中,通过调用一组API函数是可以比较轻松地完成上述要求的。下面本文将以一个实际的例子详细地介绍一下实现外部应用程序启动和关闭的具体方法和步骤:

1. 创建一个应用程序

在应用程序的窗体上添加两个Tbutton组件和一个TopenDialog组件。设置其中一个Tbutton组件的Caption属性为“启动外部应用程序”、另一个Tbutton组件的Caption属性为“关闭已开启的外部应用程序”。设置TopenDialog组件的Filter属性为“可执行文件(*.exe)|*.exe”。

2. 实现外部应用程序的启动功能

⑴ 要启动外部应用程序,可以通过调用API函数WinExec来实现。该函数用于运行指定的应用程序。下面介绍一下该函数所需的参数和返回值:

UINT WinExec(
LPCSTR lpCmdLine, file://命令行指针
UINT uCmdShow file://应用程序的窗口风格
);

如果成功,返回值大于31。否则可能返回下列结果:

0 系统内存或资源不足
ERROR_BAD_FORMAT 该*.EXE文件无效
ERROR_FILE_NOT_FOUND 没找到指定的文件
ERROR_PATH_NOT_FOUND 没找到指定路径

⑵ 通过编写标题为“启动外部应用程序”组件的OnClick事件,来实现外部应用程序的启动,代码如下:

procedure TForm1.Button1Click(Sender: TObject);
var
str: string; file://存储指定的应用程序文件名
begin
if opendialog1.Execute then file://选择要调用的外部可执行程序
begin
str := opendialog1.FileName; file://获取可执行文件名
winexec(PChar(str), SW_SHOWNORMAL); file://启动指定的可执行程序
end;
end;

3. 关闭已开启的外部应用程序

⑴ 通过调用两个API函数,可以实现该功能。这两个函数分别为:

① FindWindow函数 该函数用于查找与指定的类名和窗口名相匹配的高层窗口,如果查找成功,返回非0值,否则返回0。

② SendMessage函数 此函数向一个或多个窗口发送指定的消息。在此通过发送WM_CLOSE消息来关闭指定的外部应用程序。

⑵ 通过编写标题为“关闭已开启的外部应用程序”组件的OnClick事件,来关闭已开启的外部应用程序。代码如下:

procedure TForm1.Button2Click(Sender: TObject);
var
hWndClose: HWnd; file://存储指定的外部应用程序窗口句柄
str: String; file://存储指定的外部应用程序的窗口名
begin
str := InputBox('提示','请输入应用程序名:',''); file://获取要关闭的应用程序窗口名
if str <> '' then begin
file://根据窗口名查找要关闭的窗口句柄
hWndClose := FindWindow(nil, PChar(str));
if hWndClose <> 0 then file://如果查找成功,则发送消息,关闭指定的窗口
SendMessage(hWndClose,WM_CLOSE,0,0);
else file://否则,给出提示信息
ShowMessage('没找到指定的应用程序,所以无法关闭!');
end;
end;

时间: 2024-10-24 18:52:34

使用Delphi启动和关闭外部应用程序的相关文章

C#中通过Process启动的外部第三方程序MainWindowHandle句柄为0

原文 C#中通过Process启动的外部第三方程序MainWindowHandle句柄为0  前几天遇到了一个在C#的winform程序中,启动一个第三方jar程序,并修改jar运行窗体的标题的问题. 大体的需求就是上面说明的那样,下面是当初设想的思路和实现代码. STEP1 // 根据jar文件的路径,启动该jar Process p = Process.Start(jarfilePath);   STEP2 // 引用WindowsAPI中SetWindowText的声明 [System.R

delphi form-Delphi中我在Form里新建了一个Button用来关闭exe应用程序。

问题描述 Delphi中我在Form里新建了一个Button用来关闭exe应用程序. Delphi中我在Form里新建了一个Button用来关闭exe应用程序. 然后我要求点击按钮有提示问是否要删除,另外点击Form上的关闭按钮也要有一样的提示 如何做? 解决方案 procedure TForm1.FormCloseQuery(Sender: TObject; var CanClose: Boolean); begin case Application.MessageBox('确定退出系统?',

详解Linux系统中Oracle数据库程序的启动和关闭方式_oracle

在单机环境下,要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle Oracle数据库有以下几种启动方式: 1. startup nomount 非安装启动,这种方式启动下可执行:重建控制文件.重建数据库 读取init.ora文件,启动instance,即启动SGA和后台进程,这种启动只需要init.ora文件. 2. startup mount dbname 安装启动,这种方式启动下可执行: 数据库日志归档. 数据库介质恢复. 使数据文件联机或脱机, 重新

Delphi实现通用的定时自动关机程序

一.问题的提出:运行某任务的计算机,尤其是服务器,如果能实现在无人职守的情况下,到达指定时间时自动关机,那么将极大地减轻系统管理员的负担,也会给我们的日常工作带来很大方便. 笔者用Delphi开发的这个定时自动关机程序,适用于目前两类的Windows系列操作系统:从Windows 95/98/Me到Windows NT/2000/XP. 二.程序的功能有: 1.用户自己设定关机时间,通过自定义函数IsValidTime()判断用户输入的时间是否有效. 2.定时强制自动关机:对于windows 9

Oracle数据库的启动与关闭

oracle|数据|数据库 第十篇 Oracle数据库的启动与关闭 一.启动数据$sqlplus "sys/pass as sysdba"sql>startup 二.启动监听器 数据库启动后,如果未启动监听进程,则客户端无法与数据库连接.监听进程的启动方法为:$lsnrctl start在widnows中,可以从服务列表中启动监听器.监听里程配置文件为listener.ora,位于目录/home/app/oracle/product/10.1.0/db1/network/admi

MySQL服务器的启动和关闭

mysql|服务器 作为MySQL管理员,一个普通的目标就是确保服务器尽可能地处于运行状态,使得客户机能够随时访问它.但是,有时最好关闭服务器(例如,如果正在进行数据库的重定位,不希望服务器在该数据库中更新表).保持服务器运行和偶尔关闭它的需求关系不是本书所解 决的.但是我们至少可以讨论如何使服务器启动和停止,以便您具备进行这两个操作的能力.     本章的说明只用于UNIX 系统.如果正在运行Windows 系统,可以跳过本章,因为附录A"获得和安装软件"一节中包含了所有需要的启动和

Oracle RAC数据库的启动和关闭

RAC数据库与单实例的差异主要表现在多个实例通过集群件来统一管理共享的资源.因此原有的单实例的管理方式,如数据库.监听器等的关闭启动等可以使用原有的方式进行,也可以通过集群管理工具,命令行来集中管理,这也是推荐的管理方式.由于集群件crs位于数据库之上,即RAC数据库依赖于集群件,因此数据库的启动与关闭应该结合集群来考虑,下面以10g RAC来描述数据库启动与关闭过程,不涉及集群层的启动与关闭. 一.RAC 数据库启动与关闭顺序 1.关闭顺序 关闭OEM,关闭监听,关闭 Oracle 实例,关闭

Oracle数据库的启动与关闭方法

这篇文章主要介绍了Oracle数据库的启动与关闭方法,需要的朋友可以参考下   一.启动数据 $sqlplus "sys/pass as sysdba" sql>startup 二.启动监听器 数据库启动后,如果未启动监听进程,则客户端无法与数据库连接.监听进程的启动方法为: $lsnrctl start 在widnows中,可以从服务列表中启动监听器. 监听里程配置文件为listener.ora,位于目录/home/app/oracle/product/10.1.0/db1/n

常见电脑启动与关闭类故障分析

一.定义举例 与启动.关闭过程有关的故障.启动是指从自检完毕到进入xx作系统应用界面这一过程中发生的问题:关闭系统是指从点击关闭按扭后到电源断开之间的所有过程. 二.可能的故障现象 1.启动过程中死机.报错.黑屏.反复重启等: 2.启动过程中报某个文件错误: 3.启动过程中,总是执行一些不应该的xx作(如总是磁盘扫描.启动一个不正常的应用程序等): 4.只能以安全模式或命令行模式启动: 5.登录时失败.报错或死机: 6.关闭xx作系统时死机或报错. 三.可能涉及的部件 BIOS设置.启动文件.设