exwsscn1.pas

来自「VB Modem编程及控件」· PAS 代码 · 共 90 行

PAS
90
字号
unit ExWsScn1;

interface

uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  OleCtrls, StdCtrls, Apax1_TLB;

type
  TForm1 = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    Label2: TLabel;
    edtFromPort: TEdit;
    edtToPort: TEdit;
    btnScan: TButton;
    Label3: TLabel;
    edtWinsockAddress: TEdit;
    ListBox1: TListBox;
    Label4: TLabel;
    Apax1: TApax;
    procedure btnScanClick(Sender: TObject);
    procedure Apax1WinsockConnect(Sender: TObject);
    procedure Apax1WinsockDisconnect(Sender: TObject);
    procedure Apax1WinsockError(Sender: TObject; ErrCode: Integer);
    procedure ListBox1DblClick(Sender: TObject);
    procedure FormActivate(Sender: TObject);
  private
    procedure DoNextPort(Port : Integer);
  end;

var
  Form1: TForm1;

implementation

{$R *.DFM}

var
  FromPort : Integer;
  ToPort   : Integer;
  CurrentPort : Integer;

procedure TForm1.btnScanClick(Sender: TObject);
begin
  Apax1.WinsockAddress := edtWinsockAddress.Text;
  FromPort := StrToInt(edtFromPort.Text);
  ToPort   := StrToInt(edtToPort.Text);
  DoNextPort(FromPort);
end;

procedure TForm1.DoNextPort(Port : Integer);
begin
  CurrentPort := Port;
  Apax1.WinsockPort := IntToStr(Port);
  Caption := 'Scanning port ' + Apax1.WinsockPort;
  Apax1.WinsockConnect;
end;

procedure TForm1.Apax1WinsockConnect(Sender: TObject);
begin
  ListBox1.Items.Add(Apax1.WinsockPort);
  Apax1.Close;
end;

procedure TForm1.Apax1WinsockDisconnect(Sender: TObject);
begin
  if (CurrentPort < ToPort) then
    DoNextPort(CurrentPort + 1)
  else
    Caption := 'Done';
end;

procedure TForm1.Apax1WinsockError(Sender: TObject; ErrCode: Integer);
begin
  Apax1.Close;
end;

procedure TForm1.ListBox1DblClick(Sender: TObject);
begin
  ListBox1.Clear;
end;

procedure TForm1.FormActivate(Sender: TObject);
begin
  Apax1.Visible := False;
end;

end.

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?