📄 hsearch.pas
字号:
unit HSearch;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls, Buttons, ComCtrls, Grids, ValEdit,
IdAntiFreezeBase, IdAntiFreeze, IdBaseComponent, IdComponent, IdRawBase,
IdRawClient, IdIcmpClient,PingThrd,SinglePing,MonitorThrd,ImgList,
IdTCPConnection, IdTCPClient, ScktComp, Mask;
type
TNetSearch = class(TForm)
Panel2: TPanel;
GroupBox1: TGroupBox;
Panel3: TPanel;
GroupBox2: TGroupBox;
GroupBox3: TGroupBox;
SpeedButton1: TSpeedButton;
Edit3: TEdit;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit4: TEdit;
Label6: TLabel;
Edit5: TEdit;
Edit6: TEdit;
Edit7: TEdit;
Label1: TLabel;
Edit8: TEdit;
Label7: TLabel;
Edit9: TEdit;
Label8: TLabel;
Edit10: TEdit;
Panel4: TPanel;
Panel5: TPanel;
SpeedButton6: TSpeedButton;
GroupBox4: TGroupBox;
Timer1: TTimer;
Edit11: TEdit;
PageControl1: TPageControl;
TabSheet1: TTabSheet;
TabSheet2: TTabSheet;
IdIcmpClient1: TIdIcmpClient;
IdAntiFreeze1: TIdAntiFreeze;
Timer2: TTimer;
Panel6: TPanel;
Panel7: TPanel;
Edit12: TEdit;
Label13: TLabel;
Label14: TLabel;
Label15: TLabel;
ProgressBar2: TProgressBar;
ProgressBar1: TProgressBar;
GroupBox5: TGroupBox;
Label12: TLabel;
Edit13: TEdit;
SpeedButton2: TSpeedButton;
Label9: TLabel;
Label10: TLabel;
Edit2: TEdit;
Edit1: TEdit;
SpeedButton8: TSpeedButton;
Panel8: TPanel;
Panel9: TPanel;
ListBox1: TListBox;
Panel10: TPanel;
ImageList1: TImageList;
SpeedButton15: TSpeedButton;
Edit14: TEdit;
SpeedButton16: TSpeedButton;
SpeedButton17: TSpeedButton;
SpeedButton18: TSpeedButton;
Panel13: TPanel;
IdTCPClient1: TIdTCPClient;
ListBox2: TListBox;
Splitter3: TSplitter;
Panel16: TPanel;
SpeedButton21: TSpeedButton;
SpeedButton23: TSpeedButton;
Panel17: TPanel;
Splitter4: TSplitter;
TreeView2: TTreeView;
Panel12: TPanel;
SpeedButton10: TSpeedButton;
SpeedButton14: TSpeedButton;
Panel11: TPanel;
Panel1: TPanel;
SpeedButton12: TSpeedButton;
SpeedButton13: TSpeedButton;
SpeedButton22: TSpeedButton;
SpeedButton3: TSpeedButton;
Splitter1: TSplitter;
Panel14: TPanel;
ListBox3: TListBox;
Panel15: TPanel;
SpeedButton4: TSpeedButton;
SpeedButton5: TSpeedButton;
SpeedButton7: TSpeedButton;
SpeedButton24: TSpeedButton;
Edit15: TEdit;
SpeedButton25: TSpeedButton;
Panel18: TPanel;
SpeedButton26: TSpeedButton;
Edit16: TEdit;
Panel19: TPanel;
Panel20: TPanel;
ListView1: TListView;
SpeedButton27: TSpeedButton;
SpeedButton29: TSpeedButton;
MaskEdit1: TMaskEdit;
SpeedButton30: TSpeedButton;
SpeedButton31: TSpeedButton;
MaskEdit2: TMaskEdit;
SpeedButton32: TSpeedButton;
ComboBox1: TComboBox;
MaskEdit3: TMaskEdit;
SpeedButton20: TSpeedButton;
Timer3: TTimer;
SaveDialog1: TSaveDialog;
OpenDialog1: TOpenDialog;
SaveDialog2: TSaveDialog;
OpenDialog2: TOpenDialog;
OpenDialog3: TOpenDialog;
SaveDialog3: TSaveDialog;
Edit17: TEdit;
UpDown1: TUpDown;
SpeedButton9: TSpeedButton;
SpeedButton11: TSpeedButton;
procedure MyConnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure MyDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
procedure MyError(Sender: TObject; Socket: TCustomWinSocket;
ErrorEvent: TErrorEvent; var ErrorCode: Integer);
procedure Timer1Timer(Sender: TObject);
procedure SpeedButton1Click(Sender: TObject);
procedure SpeedButton3Click(Sender: TObject);
procedure SpeedButton6Click(Sender: TObject);
procedure Edit3Change(Sender: TObject);
procedure Edit3KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure SpeedButton7Click(Sender: TObject);
procedure ListBox1MouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
procedure ListBox1DblClick(Sender: TObject);
procedure SpeedButton10Click(Sender: TObject);
procedure SpeedButton12Click(Sender: TObject);
procedure SpeedButton16Click(Sender: TObject);
procedure ListBox1Click(Sender: TObject);
procedure TreeView1GetSelectedIndex(Sender: TObject; Node: TTreeNode);
procedure Edit11KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
procedure FormCreate(Sender: TObject);
procedure SpeedButton2Click(Sender: TObject);
procedure SpeedButton21Click(Sender: TObject);
procedure SpeedButton23Click(Sender: TObject);
procedure SpeedButton15Click(Sender: TObject);
procedure SpeedButton24Click(Sender: TObject);
procedure SpeedButton17Click(Sender: TObject);
procedure SpeedButton26Click(Sender: TObject);
procedure PageControl1Change(Sender: TObject);
procedure SpeedButton19Click(Sender: TObject);
procedure SpeedButton20Click(Sender: TObject);
procedure SpeedButton28Click(Sender: TObject);
procedure SpeedButton27Click(Sender: TObject);
procedure SpeedButton29Click(Sender: TObject);
procedure SpeedButton32Click(Sender: TObject);
procedure SpeedButton30Click(Sender: TObject);
procedure SpeedButton31Click(Sender: TObject);
procedure Timer3Timer(Sender: TObject);
procedure SpeedButton13Click(Sender: TObject);
procedure SpeedButton22Click(Sender: TObject);
procedure SpeedButton25Click(Sender: TObject);
procedure SpeedButton5Click(Sender: TObject);
procedure SpeedButton14Click(Sender: TObject);
procedure SpeedButton4Click(Sender: TObject);
procedure UpDown1Click(Sender: TObject; Button: TUDBtnType);
procedure SpeedButton9Click(Sender: TObject);
procedure SpeedButton11Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
const
myNUM=1024;
var
ScanID:integer;
NetSearch: TNetSearch;
IP_A0,IP_B0,IP_C0,IP_D0:Byte;
IP_Ao,IP_Bo,IP_Co,IP_Do:Byte;
IP_A,IP_B,IP_C,IP_D:Byte;
MultiPing:Array[1..2048] of PingThread;
OldIP,StopState:String;
PingCount:LongInt;
MyClientSkt:array[1..myNUM] of TCLientSocket;
implementation
{$R *.dfm}
Function GetiPort(ObjStr:String):Integer;
var
iPos:integer;
strPort:String;
begin
strPort:='';
for iPos:=1 to Length(ObjStr) do
Begin
if ObjStr[iPos]='=' then Break;
strPort:=StrPort+ObjStr[iPos];
end;
GetiPort:=StrToInt(StrPort);
end;
procedure TNetSearch.Timer1Timer(Sender: TObject);
begin
ProgressBar1.StepIt;
ProgressBar2.StepIt;
end;
procedure TNetSearch.SpeedButton1Click(Sender: TObject);
var
Cnt:integer;
begin
StopState:='False';
OldIP:='';
PingCount:=0;
Timer1.Enabled:=True;
IP_A:=StrToInt(Edit7.text);
IP_B:=StrToInt(Edit8.text);
IP_C:=StrToInt(Edit9.text);
IP_D:=StrToInt(Edit10.text);
IP_A0:=StrToInt(Edit3.text);
IP_B0:=StrToInt(Edit4.text);
IP_C0:=StrToInt(Edit5.text);
IP_D0:=StrToInt(Edit6.text);
IP_Ao:=StrToInt(Edit3.text);
IP_Bo:=StrToInt(Edit4.text);
IP_Co:=StrToInt(Edit5.text);
IP_Do:=StrToInt(Edit6.text);
for Cnt:=1 to StrToInt(Edit11.text) do
begin
MultiPing[Cnt]:=PingThread.Create(ListBox1.Items,StrToInt(Edit12.Text));
end;
for Cnt:=1 to StrToInt(Edit11.text) do
begin
MultiPing[Cnt].Resume;
end;
end;
procedure TNetSearch.SpeedButton3Click(Sender: TObject);
var
A1:integer;
SPing:SglPingThrd;
SIP:String;
SIPList:TStringList;
begin
Timer1.Enabled:=True;
try
SIPList:=TStringList.Create;
except
SIPList.Free;
exit;
end;
SIPList.Text:=ListBox1.Items.Text;
ListBox1.Items.Clear;
For A1:=0 To SIPList.Count-1 do
begin
SIP:=SIPList[A1];
SPing:=SglPingThrd.Create(SIP,ListBox1.Items,StrToInt(Edit12.Text));
SPing.Resume;
//if SpeedButton3.Down=False then Break;
Application.ProcessMessages;
Sleep(5);
end;
SIPList.Free;
Timer1.Enabled:=False;
end;
procedure TNetSearch.SpeedButton6Click(Sender: TObject);
begin
Timer1.Enabled:=False;
StopState:='True';
end;
procedure TNetSearch.Edit3Change(Sender: TObject);
begin
try
if (StrToInt((sender as TEdit).Text)<0)
or (StrToInt((sender as TEdit).Text)>255) then
(sender as TEdit).Text:='1';
except
(sender as TEdit).Text:='1';
end;
end;
procedure TNetSearch.Edit3KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if(Sender as TEdit)=Edit3 then Edit7.Text:=Edit3.Text;
if(Sender as TEdit)=Edit4 then Edit8.Text:=Edit4.Text;
if(Sender as TEdit)=Edit5 then Edit9.Text:=Edit5.Text;
if(Sender as TEdit)=Edit6 then Edit10.Text:='255';
end;
procedure TNetSearch.SpeedButton7Click(Sender: TObject);
var
iL:integer;
begin
for iL:=0 To Listbox3.Items.Count-1 do
if ListBox3.Selected[iL]=True then
begin
ListBox3.Items.Delete(iL);
exit;
end;
end;
procedure TNetSearch.ListBox1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
Panel10.Caption:='共搜索到'+IntToStr(ListBox1.Items.Count)+'个IP地址';
end;
procedure TNetSearch.ListBox1DblClick(Sender: TObject);
var
iL:Integer;
begin
For iL:=0 to ListBox1.Items.Count-1 do
begin
if ListBox1.Selected[iL]=True then
TreeView2.Items.Add(TreeView2.TopItem,ListBox1.Items[iL]);
end;
end;
procedure TNetSearch.SpeedButton10Click(Sender: TObject);
begin
TreeView2.Items.Clear;
end;
procedure TNetSearch.SpeedButton12Click(Sender: TObject);
var
iL:integer;
begin
for iL:=0 To Listbox1.Items.Count-1 do
if ListBox1.Selected[iL]=True then
begin
ListBox1.Items.Delete(iL);
exit;
end;
end;
procedure TNetSearch.SpeedButton16Click(Sender: TObject);
var
iL,iNwqk,iCount:integer;
begin
ScanID:=2;
For iCount:=0 to ListBox1.Items.Count-1 do
begin
Edit13.Text:=ListBox1.Items[iCount];
TreeView2.Items.Add(nil,Edit13.Text);
iNwqk:=1;
for iL:=StrToInt(Edit1.Text) to StrToInt(Edit2.Text) do
begin
repeat
iNwqk:=iNwqk+1;
if iNwqk=myNUM then
iNwqk:=1;
Application.ProcessMessages;
Panel7.Caption:=MyClientSkt[iNwqk].Address
+':'+IntToStr(iL)+'='+IntToStr(iNwqk);
if SpeedButton8.Down=True then Exit;
until MyClientSkt[iNwqk].Tag=100;
MyClientSkt[iNwqk].Socket.Close;
MyClientSkt[iNwqk].Address:=Edit13.Text;
MyClientSkt[iNwqk].Port:=iL;
MyClientSkt[iNwqk].Tag:=200;
Panel7.Caption:=MyClientSkt[iNwqk].Address
+':'+IntToStr(iL)+'='+IntToStr(iNwqk);
Try
MyClientSkt[iNwqk].Active:=True;
except
MyClientSkt[iNwqk].Active:=False;
Panel7.Caption:='系统溢出!';
Sleep(1000);
try
MyClientSkt[iNwqk].Active:=True;
except
exit;
end;
end;
end;
end;
end;
procedure TNetSearch.ListBox1Click(Sender: TObject);
var
iL:integer;
begin
For iL:=0 to ListBox1.Items.Count-1 do
begin
if ListBox1.Selected[iL] then
Edit13.Text:=ListBox1.Items[iL];
MaskEdit1.Text:=ListBox1.Items[iL];
end;
end;
procedure TNetSearch.TreeView1GetSelectedIndex(Sender: TObject;
Node: TTreeNode);
begin
Edit13.Text:=Node.Text;
end;
procedure TNetSearch.Edit11KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if StrToInt(Edit11.Text)>1024 then
Edit11.Text:='1024';
end;
procedure TNetSearch.MyConnect(Sender: TObject;
Socket: TCustomWinSocket);
var
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -