• 调用外部程序并等待程序运行结束《Lcemeaning》


    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls, Vcl.ExtCtrls,Clipbrd;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        img1: TImage;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    function WinExecAndWait32(FileName: string; Visibility: Boolean): integer;
    var
      zAppName: array[0..512] of char; //存放应用程序名
      StartupInfo: TStartupInfo;
      ProcessInfo: TProcessInformation;
      exitCode: Dword;
      aVisibility: integer;
    begin
      StrPCopy(zAppName, FileName);
      FillChar(StartupInfo, Sizeof(StartupInfo), #0);
      //给StartupInfo结构体赋值
      StartupInfo.cb := Sizeof(StartupInfo);
      StartupInfo.dwFlags := STARTF_USESHOWWINDOW;
      if Visibility then
        aVisibility := 1
      else
        aVisibility := 0;
    
      StartupInfo.wShowWindow := aVisibility;
      //调用CreateProcess 创建进程,执行指定的可执行文件
      if not CreateProcess(nil, zAppName, nil, nil, false
        , Create_NEW_CONSOLE or NORMAL_PRIORITY_CLASS
        , nil, nil, StartupInfo, ProcessInfo) then
          Result := -1
      else
        begin
          //等待可执行文件退出
          WaitforSingleObject(ProcessInfo.hProcess, INFINITE);
          //得到进程终止状态码
          GetExitCodeProcess(ProcessInfo.hProcess, exitCode);
          result := Exitcode;
        end;
    end;
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
     i : Integer;
    begin
      Hide;
      Sleep(1000);
      i := WinExecAndWait32('D:PrintScreen.exe',True);
      if i=0 then
        img1.Picture.LoadFromClipboardFormat(CF_BITMAP,ClipBoard.GetAsHandle(CF_BITMAP),0);
      Show;
    end;
    
    end.
  • 相关阅读:
    swift基本数据类型的使用
    宏定义单例类
    开发必备宏定义大全
    GUI02
    GUI01
    浅谈代码块的加载顺序
    Java里的多态
    在java中this和super的使用
    冒泡排序的简单优化
    命令行传参和不定传参
  • 原文地址:https://www.cnblogs.com/LceMeaning/p/3365766.html
Copyright © 2020-2023  润新知