转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件开发 >> Delphi程序 >> 正文
Delphi编程调用指定的Windows程序         ★★★★

Delphi编程调用指定的Windows程序

作者:闵涛 文章来源:闵涛的学习笔记 点击数:648 更新时间:2009/4/23 18:25:20

  本实例介绍如何在自己的程序中调用指定的Windows程序。

  首先启动一个新的项目,在空白的窗体上添加4个TButton组件。添加组件后的窗体如图1所示。


图1 添加组件后的窗体
  其中WinExec按钮用于以WinExec函数来调用指定的Windows程序。ShellExecute按钮用于以ShellExecute函数来调用指定的Windows程序。CreateProcess按钮和TerminateProcess按钮用于实现对被调用程序更全面的操作,前者用于调用指定的Windows程序,而后者则用于终止被调用的Windows程序。

  以WinExec函数的方式来调用指定的Windows程序的响应代码如下:

procedure TForm1.btnWinExecClick(Sender: TObject);
begin
 WinExec(’Notepad.exe’,SW_MAXIMIZE);
end;
  其中WinExec函数的第1个参数表示了被调用程序的路径和名称,第2个参数表示了程序的显示方式。

  以ShellExecute函数的方式来调用指定的Windows程序的响应代码如下:

procedure TForm1.btnShellExecuteClick(Sender: TObject);
begin
 ShellExecute(Application.Handle,’Open’,’NotePad.exe’,PChar(’C:\AutoExec.bat’),nil,SW_SHOWNORMAL);
end;
  其中ShellExecute用于打开与指定文件关联在一起的程序文件。第1个参数用于指定一个窗口的句柄;第2个参数指定了程序运行的类别,如’Open’或’Print’;第3个参数指定了想用关联程序打印或打开的一个程序名或文件名;如果第3个参数中指定了一个可执行文件,那么第4个参数就是传递给执行程序的参数;第5个参数指定了可执行程序的完整路径。最后一个参数用于设定程序运行方式。

  下面来介绍利用CreateProcess函数和TerminateProcess函数如何实现对被调用程序更全面的操作。

  首先定义3个全局变量:

PI:TProcessInformation;
SI:TStartUpInfo;
MyHandle:Thandle;
  利用CreateProcess函数调用指定程序的响应代码如下:

procedure TForm1.btnCreateProcessOpenClick(Sender: TObject);
begin
 FillChar(SI,sizeof(SI),#0);
 with SI do
begin
 cb:=sizeof(SI);
 dwFlags:=StartF_UsesTDHandles or STARTF_USESHOWWINDOW;
 lptitle:=nil;
 wShowWindow:=SW_Show;
end;
 CreateProcess(PChar(’C:\WINNT\Notepad.exe’),
 nil,nil,nil,true,DETACHED_PROCESS,nil,nil,SI,PI);
end;
  调用CreateProcess函数激活C:\WINNT\Notepad.exe程序后,把它的进程信息存储在变量PI中,然后通过下面的语句来关闭本实例打开的C:\WINNT\Notepad.exe程序:

procedure TForm1.btnCreateProcessCloseClick(Sender: TObject);
begin
 MyHandle:=OpenProcess(PROCESS_ALL_ACCESS, FALSE,PI.dwProcessId);
 TerminateProcess(MyHandle,0);
end;
  程序代码如下:

unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ShellAPI;

type
 TForm1 = class(TForm)
 btnWinExec: TButton;
 btnCreateProcessOpen: TButton;
 btnCreateProcessClose: TButton;
 btnShellExecute: TButton;
 procedure btnWinExecClick(Sender: TObject);
 procedure btnCreateProcessOpenClick(Sender: TObject);
 procedure btnCreateProcessCloseClick(Sender: TObject);
 procedure btnShellExecuteClick(Sender: TObject);
private
 { Private declarations }
public
 { Public declarations }
end;

var
 Form1: TForm1;
 PI:TProcessInformation;
 SI:TStartUpInfo;
 MyHandle:Thandle;

implementation
 {$R *.dfm}
 procedure TForm1.btnWinExecClick(Sender: TObject);
begin
 WinExec(’Notepad.exe’,SW_MAXIMIZE);
end;

procedure TForm1.btnCreateProcessOpenClick(Sender: TObject);
 begin
  FillChar(SI,sizeof(SI),#0);
  with SI do
  begin
   cb:=sizeof(SI);
   dwFlags:=StartF_UsesTDHandles or STARTF_USESHOWWINDOW;
   lptitle:=nil;
   wShowWindow:=SW_Show;
  end;
  CreateProcess(PChar(’C:\WINNT\Notepad.exe’),nil,nil,nil,true,DETACHED_PROCESS,nil,nil,SI,PI);
 end;

 procedure TForm1.btnCreateProcessCloseClick(Sender: TObject);
 begin
  MyHandle:=OpenProcess(PROCESS_ALL_ACCESS, FALSE,PI.dwProcessId);
  TerminateProcess(MyHandle,0);
  //关闭进程
 end;

 procedure TForm1.btnShellExecuteClick(Sender: TObject);
 begin
  ShellExecute(Application.Handle,’Open’,’NotePad.exe’,PChar(’C:\AutoExec.bat’),nil,SW_SHOWNORMAL);
 end;
end.

  保存文件,然后按F9键运行程序,程序运行的初始画面如图2所示。


图2 程序运行的初始画面
  单击窗体上的WinExec按钮、ShellExecute按钮和CreateProcess按钮都可以激活“记事本”程序,而通过CreateProcess按钮激活的程序可以通过TerminateProcess按钮来终止。程序运行结果如图3所示。


图3 程序运行结果
  本程序介绍了三种调用指定的Windows程序的方法,这样在大型应用程序中就可以实现各个模块程序之间的“程序超级链接”。


没有相关教程
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · C语言系列  · VB.NET程序
    · JAVA开发  · Delphi程序
    · 脚本语言
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台