zoukankan      html  css  js  c++  java
  • Delphi技巧集六 (等待执行完一个外部程序再执行另一个程序)

    http://www.cnblogs.com/kylskjb/archive/2008/08/10/1264799.html

    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

    uses ShellAPI;  //注意

    {$R *.dfm}

    function ExecAppWait(AppName, Params: string): Boolean;
    var
      ShellExInfo: TShellExecuteInfo;
    begin
      FillChar(ShellExInfo, SizeOf(ShellExInfo), 0);
      with ShellExInfo do begin
        cbSize := SizeOf(ShellExInfo);
        fMask := see_Mask_NoCloseProcess;
        Wnd := Application.Handle;
        lpFile := PChar(AppName);
        lpParameters := PChar(Params);
        nShow := sw_ShowNormal;
      end;
      Result := ShellExecuteEx(@ShellExInfo);
      if Result then
        while WaitForSingleObject(ShellExInfo.HProcess, 100) = WAIT_TIMEOUT do
        begin
          Application.ProcessMessages;
          if Application.Terminated then Break;
        end;
    end;

    procedure TForm1.Button1Click(Sender: TObject);
    const    { 连续运行下面这四个EXE文件 }
      EXEFILES : array[1..4] of string =
                 ('calc.exe', 'mspaint.exe', 'Notepad.exe', 'wordpad.exe');
    var
      Success: Boolean;
      InstanceID: THandle;
      I : integer;
    begin
      for I := Low(EXEFILES) to High(EXEFILES) do
        begin
        Application.Minimize;
        Success := False;
        try
           Success := ExecAppWait(EXEFILES[I], '')
        finally
          Application.Restore;
          if not Success then
            ShowMessage(Format('Application %d failed: %s', [ I, EXEFILES[I] ]));
        end;
      end;
    end;

    end.

  • 相关阅读:
    Docker
    Docker
    log4j日志类的使用
    &times被转义成x的解决方法
    java通用的jdbc数据库操作类
    java一个调用webapi的工具类
    Java 开发杂记
    J2EE名词解释
    C# 进程之间的通讯
    如何捕获全局异常
  • 原文地址:https://www.cnblogs.com/chulia20002001/p/1836574.html
Copyright © 2011-2022 走看看