如何调用外部程序 ( 积分: 100 )

  • 主题发起人 tangbingjun
  • 开始时间
T

tangbingjun

Unregistered / Unconfirmed
GUEST, unregistred user!
如何调用外部程序
 
J

Johnny_du

Unregistered / Unconfirmed
GUEST, unregistred user!
用函数WinExec(PChar('外部程序名'),SW_NORMAL);就可以了
如:WinExec(PChar('Calc.exe'),SW_NORMAL);可以调用Windows计算器程序
 

我行我酷

Unregistered / Unconfirmed
GUEST, unregistred user!
Johnny_du
行吗?
我试了一下,没有反应..
 

令狐冲001

Unregistered / Unconfirmed
GUEST, unregistred user!
str0:='calc.exe';
ShellExecute(Handle,'open',pchar(str0),'','',SW_SHOW);
 

令狐冲001

Unregistered / Unconfirmed
GUEST, unregistred user!
该方法打开网叶
ShellExecute(Handle,'open','http://www.cjw.com.cn/','','',SW_SHOW);
 
J

Johnny_du

Unregistered / Unconfirmed
GUEST, unregistred user!
肯定可以的,你试试看我下面的代码:
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;
implementation
{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
WinExec(PChar('Calc.exe'),SW_NORMAL);
end;

end.
 
K

KevinJo

Unregistered / Unconfirmed
GUEST, unregistred user!
winexec(pchar(ExtractFilepath(paramstr(0))+'/'Calc.exe''),sw_shownormal);
 
Y

ysp娃娃

Unregistered / Unconfirmed
GUEST, unregistred user!
以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 SIdo

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;
 
顶部