打印本文 打印本文 关闭窗口 关闭窗口
启动外部程序并等待它结束
作者:武汉SEO闵涛  文章来源:敏韬网  点击数1782  更新时间:2009/4/23 18:38:51  文章录入:mintao  责任编辑:mintao

 

interface

uses

  Windows, Messages, SysUtils, Classes, Graphics, Controls,

  Forms, Dialogs, StdCtrls,  SHELLAPI;

type

  TForm1 = class(TForm)

    Edit1: TEdit;

    Edit2: TEdit;

    Label1: TLabel;

    Label2: TLabel;

    BtnExec: TButton;

    CheckBoxWait: TCheckBox;

    Label3: TLabel;

    Label4: TLabel;

    Edit3: TEdit;

    Edit4: TEdit;

    Label5: TLabel;

    procedure BtnExecClick(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;

 

var

  Form1: TForm1;

 

implementation

 

uses

  execwait;

 

{$R *.DFM}

 

procedure TForm1.BtnExecClick(Sender: TObject);

var

  Success: Boolean;

  InstanceID: THandle;

begin

  { 最小化窗口,提醒发生的变化 }

  Application.Minimize;

 

  Success := False;

  try

    if CheckBoxWait.Checked then

      Success := ExecAppWait(Edit1.Text, Edit2.Text)

    else begin

      InstanceID := ShellExecute(Handle, ''''open'''', PChar(Edit1.Text),

        PChar(Edit2.Text), nil, SW_SHOW);

      Success := InstanceID >= 32; // 小于32可就错了

    end;

  finally

    // 可别忘了恢复我们的程序的窗口!

    Application.Restore;

    if not Success then

      ShowMessage(''''Application 1 failed: '''' + Edit1.Text + '''' '''' + Edit2.Text);

  end;

  try

    if CheckBoxWait.Checked then

      Success := ExecAppWait(Edit3.Text, Edit4.Text)

    else begin

      InstanceID := ShellExecute(Handle, ''''open'''', PChar(Edit3.Text),

        PChar(Edit4.Text), nil, SW_SHOW);

      Success := InstanceID >= 32; //小于32可就错了

   end;

  finally

    //恢复我们的程序的窗口

    Application.Restore;

    if not Success then

      ShowMessage(''''Application 2 failed: '''' + Edit3.Text + '''' '''' + Edit4.Text);

  end;

end;

 

end.

 

OK,没有问题吧?你赶快试试吧,把它应用到你的程序里。#

上一页  [1] [2] 

打印本文 打印本文 关闭窗口 关闭窗口