天天看點

ShellExecute和指令行

前段時間我在網上發現一篇文章,專門講用ShellExcute來使用cmd.exe裡的ping指令,感覺很新鮮,于是試了一下。我将它做成了單擊事件,使指令隻需用手一點按鈕就能執行!太友善了,還是非常實用的,我把具體過程寫在下面:

原帖:

                                                 使用 ShellExecute 來進行 Ping 操作

今日閑來無聊, 看到CSDN上有篇文章說關于 ShellExecute 函數的使用,突發奇想,如何利用 ShellExecute這個好東東來調用 cmd.exe 這個指令提示符程式并賦予一個值給它,讓它自動進行 Ping 操作?

關鍵發現: 先打開MS-DOS 視窗研究,在指令提示字元下輸入 cmd/? ,檢視cmd.exe這個M$一直保留的程式的幫助,有了發現.

//===================================================================

unit Unit1;

interface

uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ExtCtrls, 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}

procedure TForm1.Button1Click(Sender: TObject);

begin

    ShellExecute (Handle,nil,''''cmd.exe'''',''''/K ping 127.0.0.1'''',nil,SW_NORMAL);

//-----這句是使用參數 /K,Ping完 IP 127.0.0.1 後,cmd.exe視窗靜靜的等你看結果哦...

(摘自 http://tech.itdb.cn/n/200608/10/n20060810_59748.shtml)

    //ShellExecute (Handle,nil,''''cmd.exe'''',''''/C ping 127.0.0.1'''',nil,SW_NORMAL);

//-----這句是使用參數 /C,Ping完 IP 127.0.0.1 後,cmd.exe視窗消失了...

end;

end.

//=====================================================================

一點感想:

M$開發的程式一般都可以帶參數運作,這個很好啊...帶不同的參數,會有不同的最終結果.這點應該值得肯定.