zoukankan      html  css  js  c++  java
  • 调用外部程序并等待程序运行结束《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.
  • 相关阅读:
    AcWing 1135. 新年好 图论 枚举
    uva 10196 将军 模拟
    LeetCode 120. 三角形最小路径和 dp
    LeetCode 350. 两个数组的交集 II 哈希
    LeetCode 174. 地下城游戏 dp
    LeetCode 面试题 16.11.. 跳水板 模拟
    LeetCode 112. 路径总和 递归 树的遍历
    AcWing 1129. 热浪 spfa
    Thymeleaf Javascript 取值
    Thymeleaf Javascript 取值
  • 原文地址:https://www.cnblogs.com/LceMeaning/p/3365766.html
Copyright © 2011-2022 走看看