📄 hsearch.pas
字号:
iL:integer;
CurrentNode:TTreeNode;
begin
if ScanID=1 then
ListBox2.Items.Add(IntToStr(Socket.RemotePort));
if ScanID=2 then
begin
for iL:=0 to TreeView2.Items.Count-1 do
begin
if TreeView2.Items[iL].Text=Socket.RemoteAddress then
begin
CurrentNode:=TreeView2.Items[iL];
CurrentNode.ImageIndex:=2;
CurrentNode.SelectedIndex:=4;
CurrentNode:=TreeView2.Items.AddChild(CurrentNode,IntToStr(Socket.RemotePort));
CurrentNode.ImageIndex:=12;
CurrentNode.SelectedIndex:=7;
end;
end;
end;
if ScanID=3 then
ListBox1.Items.Add(Socket.RemoteAddress+'='+IntToStr(Socket.RemotePort));
(Sender as TClientSocket).Tag:=100;
Socket.close;
end;
procedure TNetSearch.MyDisconnect(Sender: TObject;
Socket: TCustomWinSocket);
begin
(Sender as TClientSocket).Tag:=100;
end;
procedure TNetSearch.MyError(Sender: TObject;
Socket: TCustomWinSocket; ErrorEvent: TErrorEvent;
var ErrorCode: Integer);
begin
ErrorCode:=0;
(Sender as TClientSocket).Tag:=100;
end;
procedure TNetSearch.FormCreate(Sender: TObject);
var
iL:integer;
begin
For iL:=1 to myNUM do
Begin
MyClientSkt[iL]:=TCLientSocket.Create(nil);
MyClientskt[iL].Address:='127.0.0.1';
MyClientskt[iL].Port:=80;
MyClientskt[iL].ClientType:=ctNonBlocking;
MyClientskt[iL].OnDisconnect:=MyDisconnect;
MyClientskt[iL].OnError:=MyError;
MyClientskt[iL].OnConnect:=MyConnect;
MyClientskt[iL].Tag:=100;
end;
end;
procedure TNetSearch.SpeedButton2Click(Sender: TObject);
var
iL,iNwqk:integer;
begin
ScanID:=1;
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;
procedure TNetSearch.SpeedButton21Click(Sender: TObject);
begin
ListBox2.Items.Clear;
end;
procedure TNetSearch.SpeedButton23Click(Sender: TObject);
begin
ListBox1.Items.Clear;
end;
procedure TNetSearch.SpeedButton15Click(Sender: TObject);
var
iA1,iB1,iC1,iD1,iNwqk:integer;
CurrentIP:String;
begin
ScanID:=3;
iNwqk:=0;
For iA1:=StrToInt(Edit3.Text) to StrToInt(Edit7.Text) do
For iB1:=StrToInt(Edit4.Text) to StrToInt(Edit8.Text) do
For iC1:=StrToInt(Edit5.Text) to StrToInt(Edit9.Text) do
For iD1:=StrToInt(Edit6.Text) to StrToInt(Edit10.Text) do
begin
CurrentIP:=IntToStr(iA1)+'.'+IntToStr(iB1)+'.'+
IntToStr(iC1)+'.'+IntToStr(iD1);
repeat
iNwqk:=iNwqk+1;
if iNwqk=myNUM then
iNwqk:=1;
Application.ProcessMessages;
Panel7.Caption:=CurrentIP+'搜索:'+IntToStr(iNwqk);
if SpeedButton18.Down=True then
begin
SpeedButton18.Down:=True;
Exit;
end;
until MyClientSkt[iNwqk].Tag=100;
MyClientSkt[iNwqk].Socket.Close;
MyClientSkt[iNwqk].Address:=CurrentIP;
MyClientSkt[iNwqk].Port:=StrToInt(Edit14.Text);
MyClientSkt[iNwqk].Tag:=200;
Panel7.Caption:=CurrentIP+':'+Edit14.Text+'='+IntToStr(iNwqk);
Try
MyClientSkt[iNwqk].Active:=True;
except
MyClientSkt[iNwqk].Active:=False;
Panel7.Caption:='系统溢出!';
exit;
end;
end;
SpeedButton18.Down:=True;
end;
procedure TNetSearch.SpeedButton24Click(Sender: TObject);
var
iL,CCED1:integer;
begin
CCED1:=0;
For iL:=0 To ListBox3.Items.Count-1 do
begin
if ListBox3.items[iL]=Edit15.Text then CCED1:=1;
end;
try
GetiPort(NetSearch.Edit15.Text);
except
NetSearch.Edit15.Text:='端口=注释:格式不符!';
Exit;
end;
if CCED1<>1 then ListBox3.Items.Add(Edit15.Text);
end;
procedure TNetSearch.SpeedButton17Click(Sender: TObject);
var
iL,iNwqk,iCount,iPort,iPos: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:=0 to ListBox3.Items.Count-1 do
begin
iPort:=GetiPort(ListBox3.Items[iL]);
repeat
iNwqk:=iNwqk+1;
if iNwqk=myNUM then
iNwqk:=1;
Application.ProcessMessages;
Panel7.Caption:='正在尝试'+':'+IntToStr(iPort)+'='+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:=iPort;
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.SpeedButton26Click(Sender: TObject);
var
iL:integer;
ExistID:Boolean;
begin
ExistID:=False;
For iL:=0 To ListBox1.Items.Count-1 do
if ListBox1.Items[iL]=Edit16.Text then
ExistID:=True;
if ExistID=False then ListBox1.Items.Add(Edit16.Text);
end;
procedure TNetSearch.PageControl1Change(Sender: TObject);
begin
if PageControl1.ActivePageIndex=1 then
begin
Panel17.Width:=0;
GroupBox1.Width:=0;
end else
begin
Panel17.Width:=208;
GroupBox1.Width:=188;
end;
end;
procedure TNetSearch.SpeedButton19Click(Sender: TObject);
begin
ListView1.ViewStyle:=vsIcon;
end;
procedure TNetSearch.SpeedButton20Click(Sender: TObject);
var
iLmain,iLSub:integer;
SaveDataList:TStringList;
begin
if SaveDialog3.Execute then
begin
SaveDataList:=TStringList.Create;
for iLmain:=0 to ListView1.Items.Count-1 do
begin
SaveDataList.Add(ListView1.Items[iLmain].Caption);
for iLsub:=0 to ListView1.Items[iLmain].SubItems.Count-1 do
SaveDataList.Add(ListView1.Items[iLmain].SubItems[iLsub]);
end;
SaveDataList.SaveToFile(SaveDialog3.FileName);
end;
end;
procedure TNetSearch.SpeedButton28Click(Sender: TObject);
begin
ListView1.ViewStyle:=vsList;
end;
procedure TNetSearch.SpeedButton27Click(Sender: TObject);
begin
if ListView1.ViewStyle=vsReport then
ListView1.ViewStyle:=vsIcon else
if ListView1.ViewStyle=vsIcon then
ListView1.ViewStyle:=vsList else
if ListView1.ViewStyle=vsList then
ListView1.ViewStyle:=vsSmallIcon else
ListView1.ViewStyle:=vsReport;
end;
procedure TNetSearch.SpeedButton29Click(Sender: TObject);
var
TheListItems:TListItem;
begin
TheListItems:=ListView1.Items.Add;
TheListItems.Caption:=MaskEdit1.Text;
TheListItems.SubItems.add(IntToStr(ListView1.Items.Count));
TheListItems.SubItems.Add('未知');
TheListItems.SubItems.Add(ComboBox1.Text);
if ComboBox1.Text='计算机' then TheListItems.ImageIndex:=0;
if ComboBox1.Text='工作站' then TheListItems.ImageIndex:=17;
if ComboBox1.Text='服务器' then TheListItems.ImageIndex:=2;
if ComboBox1.Text='交换机' then TheListItems.ImageIndex:=15;
if ComboBox1.Text='路由器' then TheListItems.ImageIndex:=21;
if ComboBox1.Text='网 关' then TheListItems.ImageIndex:=20;
if ComboBox1.Text='防火墙' then TheListItems.ImageIndex:=19;
TheListItems.StateIndex:=3;
TheListItems.SubItems.add(MaskEdit3.Text);
TheListItems.SubItems.add('0%');
TheListItems.SubItems.add('0');
TheListItems.SubItems.add('0');
end;
procedure TNetSearch.SpeedButton32Click(Sender: TObject);
begin
if ListView1.SelCount<>0 then ListView1.Selected.Delete;
end;
procedure TNetSearch.SpeedButton30Click(Sender: TObject);
var
A1:integer;
SPing:array[1..2048] of MonitorIP;
SIP:String;
begin
For A1:=0 To ListView1.items.Count-1 do
begin
if ListView1.Items[A1].SubItems[1]='在线' then
ListView1.Items[A1].StateIndex:=1;
if ListView1.Items[A1].SubItems[1]='断开' then
ListView1.Items[A1].StateIndex:=3;
Try
ListView1.Items[A1].SubItems[6]:=IntToStr(StrToInt(ListView1.Items[A1].SubItems[6])+1);
ListView1.Items[A1].SubItems[4]:=IntToStr(Trunc(100*(StrToInt(ListView1.Items[A1].SubItems[5])
/StrToInt(ListView1.Items[A1].SubItems[6]))))+'%';
except
exit;
end;
ListView1.Items[A1].SubItems[1]:='断开';
SIP:=ListView1.items[A1].Caption;
try
SPing[A1+1]:=MonitorIP.Create(SIP,ListView1.Items[A1].SubItems,StrToInt(MaskEdit2.Text));
SPing[A1+1].Resume;
Except
exit;
end;
Application.ProcessMessages;
end;
For A1:=0 To ListView1.items.Count-1 do
begin
if SPing[A1+1].Suspended=True then SPing[A1+1].Terminate;
end;
end;
procedure TNetSearch.SpeedButton31Click(Sender: TObject);
begin
Timer3.Interval:=StrToInt(MaskEdit2.Text);
if SpeedButton31.Down=True then
Timer3.Enabled:=True else Timer3.Enabled:=False;
end;
procedure TNetSearch.Timer3Timer(Sender: TObject);
begin
SpeedButton30Click(self);
end;
procedure TNetSearch.SpeedButton13Click(Sender: TObject);
begin
if SaveDialog1.Execute=True then
ListBox1.Items.SaveToFile(SaveDialog1.FileName);
end;
procedure TNetSearch.SpeedButton22Click(Sender: TObject);
begin
if OpenDialog1.Execute=True then
ListBox1.Items.LoadFromFile(OpenDialog1.FileName);
end;
procedure TNetSearch.SpeedButton25Click(Sender: TObject);
begin
if SaveDialog2.Execute=True then
ListBox3.Items.SaveToFile(SaveDialog2.FileName);
end;
procedure TNetSearch.SpeedButton5Click(Sender: TObject);
begin
if OpenDialog2.Execute=True then
ListBox3.Items.LoadFromFile(OpenDialog2.FileName);
end;
procedure TNetSearch.SpeedButton14Click(Sender: TObject);
begin
if TreeView2.Selected<>nil then
TreeView2.Items.Delete(TreeView2.Selected);
end;
procedure TNetSearch.SpeedButton4Click(Sender: TObject);
begin
ListBox3.Items.Clear;
end;
procedure TNetSearch.UpDown1Click(Sender: TObject; Button: TUDBtnType);
begin
ListBox1.Columns:=StrToInt(Edit17.text);
end;
procedure TNetSearch.SpeedButton9Click(Sender: TObject);
begin
Timer3.Enabled:=False;
end;
procedure TNetSearch.SpeedButton11Click(Sender: TObject);
var
iLmain,iLSub:integer;
SaveDataList:TStringList;
TheListItems:TListItem;
begin
if OpenDialog3.Execute then
begin
SaveDataList:=TStringList.Create;
SaveDataList.LoadFromFile(OpenDialog3.FileName);
iLmain:=0;
Repeat
TheListItems:=ListView1.Items.Add;
TheListItems.Caption:=SaveDataList[iLmain];
for iLsub:=1 to 7 do
begin
TheListItems.SubItems.add(SaveDataList[iLmain+iLsub]);
end;
if TheListItems.SubItems[2]='计算机' then TheListItems.ImageIndex:=17;
if TheListItems.SubItems[2]='工作站' then TheListItems.ImageIndex:=0;
if TheListItems.SubItems[2]='服务器' then TheListItems.ImageIndex:=2;
if TheListItems.SubItems[2]='交换机' then TheListItems.ImageIndex:=15;
if TheListItems.SubItems[2]='路由器' then TheListItems.ImageIndex:=21;
if TheListItems.SubItems[2]='网 关' then TheListItems.ImageIndex:=20;
if TheListItems.SubItems[2]='防火墙' then TheListItems.ImageIndex:=19;
TheListItems.StateIndex:=3;
iLmain:=iLmain+8;
until iLmain=SaveDataList.Count;
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -