Unit1.pas
上传用户:psxgmh
上传日期:2013-04-08
资源大小:15112k
文件大小:1k
源码类别:

Delphi/CppBuilder

开发平台:

Delphi

  1. unit Unit1;
  2. interface
  3. uses
  4.   Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  5.   Dialogs, StdCtrls;
  6. type
  7.   TForm1 = class(TForm)
  8.     btnExecute: TButton;
  9.     procedure btnExecuteClick(Sender: TObject);
  10.   private
  11.     { Private declarations }
  12.   public
  13.     { Public declarations }
  14.   end;
  15. var
  16.   Form1: TForm1;
  17. implementation
  18. {$R *.dfm}
  19. function WinExecAndWait32(FileName: string; Visibility: Boolean): integer;
  20. var
  21.   zAppName: array[0..512] of char; //存放应用程序名
  22.   StartupInfo: TStartupInfo;
  23.   ProcessInfo: TProcessInformation;
  24.   exitCode: Dword;
  25.   aVisibility: integer;
  26. begin
  27.   StrPCopy(zAppName, FileName);
  28.   FillChar(StartupInfo, Sizeof(StartupInfo), #0);
  29.   //给StartupInfo结构体赋值
  30.   StartupInfo.cb := Sizeof(StartupInfo);
  31.   StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
  32.   if Visibility then
  33.     aVisibility := 1
  34.   else
  35.     aVisibility := 0;
  36.   StartupInfo.wShowWindow := aVisibility;
  37.   //调用CreateProcess 创建进程,执行指定的可执行文件
  38.   if not CreateProcess(nil, zAppName, nil, nil, false
  39.     , CREATE_NEW_CONSOLE or NORMAL_PRIORITY_CLASS
  40.     , nil, nil, StartupInfo, ProcessInfo) then
  41.     Result := -1
  42.   else
  43.   begin
  44.     //等待可执行文件退出
  45.     WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
  46.     //得到进程终止状态码
  47.     GetExitCodeProcess(ProcessInfo.hProcess, exitCode);
  48.     result := Exitcode;
  49.   end;
  50. end;
  51. procedure TForm1.btnExecuteClick(Sender: TObject);
  52. begin
  53.   WinExecAndWait32('notepad', True);
  54. end;
  55. end.