今日是:
  小新技术网 -=> 程序开发 -=> DELPHI -=> 正文

Delphi编程调用指定的Windows程序

作者:[网狐教程] 来源:[本站] 浏览:[] 评论:[]  【字体:
本实例介绍如何在自己的程序中调用指定的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程序的方法,这样在大型应用程序中就可以实现各个模块程序之间的“程序超级链接”。
下一篇:Delphi编程创建和删除文件夹
上一篇:Delphi编程实现清空回收站
IP查询、IP签名
打印 】【 收藏 】【 评论 】【 推荐
相关文章 栏目推荐文章 栏目热门文章
 普通文章 Delphi编程使程序不在系统任务条上.. 
 推荐文章 Delphi编程将数据库数据快速导入E.. 
 推荐文章 通过实例看VCL组件开发全过程(三.. 
 推荐文章 系统操作进行监视 
 推荐文章 隐藏我的电脑中驱动器 
 推荐文章 一个完整身份证效验程序 
 推荐文章 Delphi编程技巧集锦 
 推荐文章 delphi函数参考手册 
 推荐文章 用Delphi开发数据库程序经验三则 
 推荐文章 delphi函数参考手册 
 推荐文章 Delphi编程将数据库数据快速导入E.. 
 普通文章 DELPHI超级Internet控件集--INDY 
 普通文章 Delphi实现通用的定时自动关机程序.. 
 推荐文章 一个完整身份证效验程序 
 普通文章 Delphi中实现DBGrid列宽度自动调整.. 
 普通文章 Delphi编程创建和删除文件夹 
 普通文章 Delphi编程调用指定的Windows程序.. 
最新文章 最新推荐文章 热门文章
 普通文章 简历封面 
 普通文章 简历封皮(二) 
 推荐文章 用好Windows共享 确保安全 
 推荐文章 多点出发:消除局域网遗留共享痕迹.. 
 普通文章 只需三步!闪盘立刻变成启动盘 
 普通文章 战无不胜 一目了然看穿局域网 
 普通文章 Win 2000/XP在局域网内批量升级 
 普通文章 黑客经常更改的系统配置文件及注册.. 
 推荐文章 用好Windows共享 确保安全 
 推荐文章 多点出发:消除局域网遗留共享痕迹.. 
 推荐文章 Ghost二十个鲜为人知的实用参数 
 推荐文章 ASP.NET程序中常用的三十三种代码.. 
 推荐文章 黑客利用Ms05002溢出找“肉鸡” 
 推荐文章 C# 3.0语言详解之基本的语言增强 .. 
 推荐文章 Ghost所有运行错误代码完全大揭秘.. 
 推荐文章 利用Java Swing 实现游戏开发 
 推荐文章 秘籍:QQ头像任意换 
 普通文章 提升QQ等级 QQ挂机升级外挂  
 普通文章 QQ100个经典个性签名!可爱经典贴图.. 
 推荐文章 BIOS设置图解教程(多图) 
 普通文章 惊现腾讯QQ刷等级漏洞 
 普通文章 求职简历封皮  
 普通文章 突破在线观看电影 
 普通文章 GIF动画图片制作教程 
点击查看更多评论
笔名:
评论:
[评论将在5分钟内被审核,请耐心等待]
【注】 发表评论必需遵守以下条例:
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款
  • 本站大部分为网络转载,如有版权问题,请通知我们,我们立即更正!

设置首页 - 版权声明 - 广告服务 - 关于我们 - 联系我们 - 友情连接
Copyright ©2003-2005 xker.com All rights reserved. 网站合作、广告联系QQ:12231446
小新技术网  冀ICP备05002857号