本实例介绍如何在自己的程序中调用指定的Windows程序。
![]()
首先启动一个新的项目,在空白的窗体上添加4个TButton组件。添加组件后的窗体如图4-29所示。

图4-29 添加组件后的窗体
其中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;
| Visual C++编程窃取QQ密码 | 12-08 | |
| 编程实现重起网卡等设备 | 12-07 | |
| 一个邮件群发的Delphi代码! | 12-06 | |
| Delphi下Internet的编程技巧 | 11-20 | |
| Delphi黑客编程-如何映射虚拟盘 | 11-15 | |
| 用DETOURS库获取NT管理员权限 | 11-08 | |
| 一篇关于vb代码质量提高的文章 | 10-30 | |
| 解析Asp.net木马文件操作 | 10-04 | |
| 盗QQ源码 | 10-01 | |
| 如何映射肉鸡磁盘(Delphi黑客编程 | 09-24 | |
| 打造无DLL版穿墙Downloader(Delp | 09-22 | |
| 调用指定的Windows程序(Delphi编 | 09-19 | |