返回首页 - 当前索引 -
主  题:
怎样调用EXE文件?

怎样在Delphi中调用EXE文件,最简单、最容易理解的方法。
回复人: Means_pan(酷鱼-真的是"难得胡涂") ( ) 信誉:97 2002-12-31 08:33:40Z 得分:0
?

ole or shell
Top
回复人: naughtyboy(重归起跑线) ( ) 信誉:130 2002-12-31 09:37:53Z 得分:0
?

uses shellapi;
  shellexecute(handle,nil,pchar('D:\Program Files\反编译工具\ResHack\ResHack\ResHacker.exe'),nil,nil,sw_show);
Top
回复人: Qyg(大千世界) ( ) 信誉:93 2002-12-31 09:43:40Z 得分:0
?

INT WinExec(

    LPCSTR lpCmdLine,	// address of command line 
    UINT uCmdShow 	// window style for new application 
   );
这个比较好用喔。
Top
回复人: szkxy(雨鱼) ( ) 信誉:94 2002-12-31 09:45:42Z 得分:0
?

ShellExecute(Application.Handle, 'open', PChar('c:\fish.exe'), '','', SW_SHOWNORMAL);
Top
回复人: ghyghost(爱国人士--海威思特) ( ) 信誉:106 2003-01-04 01:18:15Z 得分:0
?

WinExec
ShellExecute
Top
回复人: chwdong(chwdong) ( ) 信誉:100 2003-01-04 10:23:17Z 得分:0
?

ExecuteFile(Pchar(exename),'','',SW_SHOWNormal);

Top
回复人: kingting(用Delphi,钻SQL Server) ( ) 信誉:100 2003-01-04 10:41:07Z 得分:3
?

//加一下按钮,加一个对话框就OK啦
procedure TForm1.Button1Click(Sender: TObject);
var
  S: String;
begin
  if OpenDialog1.Execute then
  begin
    s := OpenDialog1.FileName;
    WinExec( PChar(s), SW_NORMAL);
  end;
end;

Top
回复人: goodloop(小志) ( ) 信誉:105 2003-01-04 12:32:10Z 得分:10
?

我们常用的函数有两个,WinExec 和 ShellExecute。 

  1) 使用 WinExec 函数 (属于 WinProcs单元) 
· 声明形式   UNIT WinExec(LPCSTR lpCmdLine, UINT uCmdShow); 
 [例] var SDir:string; 
SetLength(SDir,144); 
GetWindowsDirectory(PChar(SDir),144); 
SetLength(SDir,StrLen(PChar(SDir))); 
SDir:=SDir+'\notepad.exe'+' '+savedialog1.FileName; 
WinExec(PChar(SDir), SW_SHOWMAXIMIZED); 
    注意:如果 SDir 不是有效路径不会提示错误。 
[例] winexec('command.com /c copy *.* c:\',SW_Normal); 
[例] winexec('start abc.txt'); 



  2)使用 ShellExecute 函数(属于ShellAPI单元) 
它的几个参数: 
· hwnd:窗体的句柄; 
· lpOperation:打开程序执行的操作,共预留有"open"、"explore"、 "print"三种方式,此参数可以省略,此时将依据打开的文件(lpFile)的类型执行相应的操作,比如:如果lpFile为一文本文件,那么将会在与该文件相关联的程序中打开它 
· lpFile:文件名;  
· lpParamerters:打开文件时所需的参数;  
· lpDirectory:文件名所在的路径,当然,一般来说,在Windows中登记过的程序(如WinWord)不必提供此参数; 
· nShowCmd:打开文件后程序窗体如何显示。  

(1)运行可执行文件 
  [例] 以"记事本"为例 
procedure TForm1.OpenBtnClick(Sender:TObject);  
 begin ShellExecute(handle,'open','notepad.exe',nil,nil,SW_ShowNormal);  end;  
   此外,ShellExeCute() 还可以进行链接网络。 
 [例] procedure TForm1.HttpClick(Sender: TObject);  
begin  
  ShellExecute(handle,'open','http://liangming.163.net', nil,nil,SW_ShowNormal);  
end; 

(2)打开在Windows注册的外部文件   
    如果一个文件已经在Windows的注册表中注册了,那我们就可以通过以下方法运行他,首先要在uses部分加入: uses Shellapi;  
接着定义一个过程  
procedure URLink(URL:PChar); 
begin 
  ShellExecute(0, nil, URL, nil, nil, SW_NORMAL); 
end;  
在要调用的地方使用: URLink('Readme.txt');  
要链接到主页就改用:   URLink('http://vortex.yeah.net');  
要发邮件就要在邮件地址前加: mailto URLink('mailto:guihong@163.net');  
如果是打开外部执行程序的话,那么也可以直接调用。
Top
回复人: wks(有事给我发短消息) ( ) 信誉:105 2003-01-04 14:03:11Z 得分:7
?

function RunProgram(ProgramName:string;Wait:Boolean=False):Cardinal;
var
  StartInfo:STARTUPINFO;
  ProcessInfo:PROCESS_INFORMATION;
begin
//执行外部程序,失败返回0,成功返回进程句柄
  Result:=0;
  if ProgramName='' then exit;
  GetStartupInfo(StartInfo);
  StartInfo.dwFlags:=StartInfo.dwFlags or STARTF_FORCEONFEEDBACK;
  if not CreateProcess(nil,PChar(ProgramName),nil,nil,false,0,
          nil,nil,StartInfo,ProcessInfo) then  exit;
  Result:=ProcessInfo.hProcess;
  //建立进程成功
  //如果异步执行则退出
  if not wait then exit;
  while IsProgram_Runing(Result) do Application.ProcessMessages;
end;

function IsProgram_Runing(hProcess:Cardinal):Boolean;
var
  ExitCode:Cardinal;
begin
  //查看进程是否正在运行
  GetExitCodeProcess(hProcess,ExitCode);
  if ExitCode=STILL_ACTIVE then
    Result:=True
  else
    Result:=False;
end;
Top
回复人: wks(有事给我发短消息) ( ) 信誉:105 2003-01-06 17:38:29Z 得分:0
?

怎么还不揭贴呢
Top
回复人: red_bird(红鸟) ( ) 信誉:77 2003-01-08 12:26:56Z 得分:0
?

怎么结贴
Top
回复人: tfxg(土匪) ( ) 信誉:104 2003-01-08 12:33:15Z 得分:0
?

ShellExecute(Application.Handle, 'open', PChar(‘路径’), '','', SW_SHOWNORMAL);

Top
回复人: wks(有事给我发短消息) ( ) 信誉:105 2003-01-08 15:14:40Z 得分:0
?

看到后边的管理了吗,进入,给大家分,
要不看帮助,右上角
Top
回复人: wind0513(风儿) ( ) 信誉:100 2003-01-08 15:21:13Z 得分:0
?

WinExec 和 ShellExecute。 

Top

结贴 ,得分记录: kingting (3)、 goodloop (10)、 wks (7)、