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;

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Delphi启动程序内嵌到自身是指在Delphi程序中调用另一个程序,并将其嵌入到当前程序的界面中显示和操作。 在Delphi中,可以使用ShellExecute函数来启动一个外部程序。该函数接受多个参数,包括程序路径、命令行参数、工作目录和显示方式等。通过调用ShellExecute函数,并传入需要启动程序路径,就可以在Delphi程序启动程序。 在启动程序后,可以使用窗口句柄来获取外部程序的进程,并使用Windows API函数来操作和控制它。可以使用FindWindow、SetWindowPos等函数来获取和设置窗口的句柄、位置和大小等。 通过获取外部程序的窗口句柄后,可以将其嵌入到Delphi程序的界面中。可以使用SetParent函数将外部程序的窗口句柄设置为Delphi程序的一个控件的子窗口,使外部程序的界面显示在当前程序的界面中。同时,还可以根据需要调整外部程序的位置和大小,以使其适应Delphi程序的界面布局。 除了嵌入外部程序的界面,还可以通过消息传递方式与外部程序进行交互。可以使用SendMessage函数向外部程序发送消息,并接收其返回的消息。通过消息传递,可以实现与外部程序的数据交换、状态同步等功能。 需要注意的是,嵌入外部程序可能会引起一些兼容性和稳定性问题。所以在进行嵌入操作之前,最好进行充分的测试和验证,确保整个系统的稳定性和可靠性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值