📄 scanipunit.pas
字号:
end;
end;
repeat
Application.ProcessMessages;
Gauge5.Progress:=SdScanCount;
until SdScanCount=0;
SpeedButton8.Down:=True;
Gauge5.Progress:=0;
Application.MessageBox('===扫描任务完成!===','扫描完毕',
MB_OK+MB_ICONSTOP);
end;
procedure TScanIPFm.SingleHostScan2;
var
i:integer;
ThePortScan:ScanHostPortThread;
FromPort,ToPort:integer;
begin
Gauge1.MaxValue:=StrToInt(Edit12.Text);
Gauge1.Progress:=0;
Gauge5.MaxValue:=MultiScanCount;
Gauge5.Progress:=0;
FromPort:=StrToInt(Edit11.text);
ToPort:=StrToInt(Edit12.text);
For i:=FromPort To ToPort do
begin
repeat
Application.ProcessMessages;
Gauge5.Progress:=SdScanCount;
if SpeedButton8.Down then
begin
repeat
Application.ProcessMessages;
Gauge5.Progress:=SdScanCount;
until SdScanCount=0;
Application.MessageBox('===扫描由您主动结束===','扫描中断',
MB_OK+MB_ICONSTOP);
Gauge5.Progress:=0;
exit;
end;
until SdScanCount<MultiScanCount;
Gauge1.Progress:=i;
Gauge5.Progress:=SdScanCount;
Panel8.Caption:='扫描'+Edit10.Text+':'+IntToStr(i);
Try
ThePortScan:=ScanHostPortThread.Create(Edit10.Text,i,TreeView1);
except
end;
end;
repeat
Application.ProcessMessages;
Gauge5.Progress:=SdScanCount;
until SdScanCount=0;
Gauge5.Progress:=0;
end;
procedure TScanIPFm.MultiHostScan;
var
i:integer;
TheNewNode:TTreeNode;
begin
SdScanCount:=0;
For i:=0 to ListView1.Items.Count-1 do
begin
if ListView1.Items[i].Checked then
begin
Edit10.Text:=ListView1.Items[i].Caption;
TheNewNode:=TreeView1.Items.Add(nil,Edit10.Text);
TheNewNode.ImageIndex:=0;
TheNewNode.StateIndex:=0;
TheNewNode.SelectedIndex:=0;
Repeat
Application.ProcessMessages;
if SpeedButton8.Down then exit;
until SdScanCount=0;
SingleHostScan2;
end;
end;
Application.MessageBox('===扫描任务完成!===','扫描完毕',
MB_OK+MB_ICONSTOP);
SpeedButton8.Down:=True;
end;
procedure TScanIPFm.RadioGroup1Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex=0 then
Edit9.Enabled:=False else
Edit9.Enabled:=True;
end;
procedure TScanIPFm.Timer1Timer(Sender: TObject);
var
MidColor:TColor;
begin
Gauge3.Progress:=Gauge3.Progress+10;
if Gauge3.Progress=100 then
begin
Gauge3.Progress:=0;
MidColor:=Gauge3.BackColor;
Gauge3.BackColor:=Gauge3.ForeColor;
Gauge3.ForeColor:=MidColor;
end;
end;
procedure TScanIPFm.SpeedButton5Click(Sender: TObject);
begin
if RadioGroup1.ItemIndex=1 then
ScanPortPorcess else PingPorcess;
end;
procedure TScanIPFm.SpeedButton6Click(Sender: TObject);
begin
Timer1.Enabled:=false;
end;
procedure TScanIPFm.Edit1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=8 then exit;
if (48<=Key) and (Key<=57) then
begin
if StrToInt((Sender as TEdit).Text)>255 then
(Sender as TEdit).Text:='255';
end else (Sender as TEdit).Text:=OldEditText;
OldEditText:=(Sender as TEdit).Text;
if Key=190 then Edit2.SetFocus;
Edit5.Text:=Edit1.Text;
end;
procedure TScanIPFm.FormCreate(Sender: TObject);
begin
OldEditText:='0';
SdPingCount :=0;
SdScanCount :=0;
MultiPingCount:=100;
MultiScanCount:=100;
LetPingSingle:=TCriticalSection.Create;
LetScanSingle:=TCriticalSection.Create;
end;
procedure TScanIPFm.Edit2KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=8 then exit;
if (48<=Key) and (Key<=57) then
begin
if StrToInt((Sender as TEdit).Text)>255 then
(Sender as TEdit).Text:='255';
end else (Sender as TEdit).Text:=OldEditText;
OldEditText:=(Sender as TEdit).Text;
if Key=190 then Edit3.SetFocus;
Edit6.Text:=Edit2.Text;
end;
procedure TScanIPFm.Edit3KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=8 then exit;
if (48<=Key) and (Key<=57) then
begin
if StrToInt((Sender as TEdit).Text)>255 then
(Sender as TEdit).Text:='255';
end else (Sender as TEdit).Text:=OldEditText;
OldEditText:=(Sender as TEdit).Text;
if Key=190 then Edit4.SetFocus;
Edit7.Text:=Edit3.Text;
end;
procedure TScanIPFm.Edit4KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=8 then exit;
if (48<=Key) and (Key<=57) then
begin
if StrToInt((Sender as TEdit).Text)>255 then
(Sender as TEdit).Text:='255';
end else (Sender as TEdit).Text:=OldEditText;
OldEditText:=(Sender as TEdit).Text;
if Key=190 then Edit5.SetFocus;
end;
procedure TScanIPFm.Edit5KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=8 then exit;
if (48<=Key) and (Key<=57) then
begin
if StrToInt((Sender as TEdit).Text)>255 then
(Sender as TEdit).Text:='255';
end else (Sender as TEdit).Text:=OldEditText;
OldEditText:=(Sender as TEdit).Text;
if Key=190 then Edit6.SetFocus;
end;
procedure TScanIPFm.Edit6KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=8 then exit;
if (48<=Key) and (Key<=57) then
begin
if StrToInt((Sender as TEdit).Text)>255 then
(Sender as TEdit).Text:='255';
end else (Sender as TEdit).Text:=OldEditText;
OldEditText:=(Sender as TEdit).Text;
if Key=190 then Edit7.SetFocus;
end;
procedure TScanIPFm.Edit7KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=8 then exit;
if (48<=Key) and (Key<=57) then
begin
if StrToInt((Sender as TEdit).Text)>255 then
(Sender as TEdit).Text:='255';
end else (Sender as TEdit).Text:=OldEditText;
OldEditText:=(Sender as TEdit).Text;
if Key=190 then Edit8.SetFocus;
end;
procedure TScanIPFm.Edit8KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
if Key=8 then exit;
if (48<=Key) and (Key<=57) then
begin
if StrToInt((Sender as TEdit).Text)>255 then
(Sender as TEdit).Text:='255';
end else (Sender as TEdit).Text:=OldEditText;
OldEditText:=(Sender as TEdit).Text;
if Key=190 then Edit1.SetFocus;
end;
procedure TScanIPFm.SpeedButton4Click(Sender: TObject);
begin
Edit4.Text:='0';
Edit8.Text:='255';
end;
procedure TScanIPFm.SpeedButton3Click(Sender: TObject);
begin
Edit3.Text:='0';
Edit7.Text:='255';
end;
procedure TScanIPFm.SpeedButton2Click(Sender: TObject);
begin
Edit2.Text:='0';
Edit6.Text:='255';
end;
procedure TScanIPFm.SpeedButton1Click(Sender: TObject);
begin
Edit1.Text:='0';
Edit5.Text:='255';
end;
procedure TScanIPFm.SpinButton1UpClick(Sender: TObject);
begin
IF StrToInt(FromEdit.Text)+1>255 Then exit;
if FromEdit<>nil then
FromEdit.Text:=IntToStr(StrToInt(FromEdit.Text)+1);
end;
procedure TScanIPFm.Edit1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
FromEdit:=(Sender as TEdit);
end;
procedure TScanIPFm.Edit5MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ToEdit:=(Sender as TEdit)
end;
procedure TScanIPFm.SpinButton1DownClick(Sender: TObject);
begin
If StrToInt(FromEdit.Text)-1<0 Then exit;
if FromEdit<>nil then
FromEdit.Text:=IntToStr(StrToInt(FromEdit.Text)-1);
end;
procedure TScanIPFm.SpinButton2DownClick(Sender: TObject);
begin
If StrToInt(ToEdit.Text)-1<0 Then exit;
if ToEdit<>nil then
ToEdit.Text:=IntToStr(StrToInt(ToEdit.Text)-1);
end;
procedure TScanIPFm.SpinButton2UpClick(Sender: TObject);
begin
If StrToInt(ToEdit.Text)+1>255 Then exit;
if ToEdit<>nil then
ToEdit.Text:=IntToStr(StrToInt(ToEdit.Text)+1);
end;
procedure TScanIPFm.Edit1Change(Sender: TObject);
begin
if (Sender as TEdit).Text='' then (Sender as TEdit).Text:='0';
end;
procedure TScanIPFm.FormDestroy(Sender: TObject);
begin
LetPingSingle.Free;
LetScanSingle.Free;
end;
procedure TScanIPFm.Edit2Change(Sender: TObject);
begin
if (Sender as TEdit).Text='' then (Sender as TEdit).Text:='0';
end;
procedure TScanIPFm.Edit3Change(Sender: TObject);
begin
if (Sender as TEdit).Text='' then (Sender as TEdit).Text:='0';
end;
procedure TScanIPFm.SpinEdit1Change(Sender: TObject);
begin
MultiPingCount:=SpinEdit1.Value;
MultiScanCount:=SpinEdit1.Value;
end;
procedure TScanIPFm.ListView1MouseMove(Sender: TObject; Shift: TShiftState;
X, Y: Integer);
begin
ListView1.Hint:='共搜索到'+IntToStr(ListView1.Items.Count)+'个';
end;
procedure TScanIPFm.SpeedButton15Click(Sender: TObject);
begin
Close;
end;
procedure TScanIPFm.SpeedButton11Click(Sender: TObject);
begin
ListView1.Items.Clear;
Panel10.Caption:='扫描结果已全部清除';
end;
procedure TScanIPFm.ListView1Click(Sender: TObject);
begin
if ListView1.Selected<>nil then
SpeedButton12.Enabled:=True else
SpeedButton12.Enabled:=False;
if ListView1.Selected<>nil then
Edit10.Text:=ListView1.Selected.Caption;
end;
procedure TScanIPFm.SpeedButton13Click(Sender: TObject);
var
SaveList:TStringList;
i:integer;
begin
if SaveDialog1.Execute then
begin
SaveList:=TStringList.Create;
for i:=0 to ListView1.Items.Count-1 do
SaveList.Add(ListView1.Items[i].Caption);
SaveList.SaveToFile(SaveDialog1.FileName);
Savelist.Free;
end;
end;
procedure TScanIPFm.RadioGroup2Click(Sender: TObject);
begin
if RadioGroup2.ItemIndex=0 then
Edit10.Enabled:=True else
Edit10.Enabled:=False;
end;
procedure TScanIPFm.FormShow(Sender: TObject);
begin
IdIPWatch1.Active:=True;
ComboBox1.Text:=IdIPWatch1.CurrentIP;
ComboBox1.Items.Text:=IdIPWatch1.IPHistoryList.Text;
IdIPWatch1.Active:=False;
FillLocalIP;
FromEdit:=Edit4;ToEdit:=Edit8;
end;
procedure TScanIPFm.N2Click(Sender: TObject);
begin
if ListView1.Selected<>nil then
ListView1.Selected.Delete;
end;
procedure TScanIPFm.N3Click(Sender: TObject);
begin
if ListView1.Selected<>nil then
ListView1.Items.Clear;
end;
procedure TScanIPFm.SpeedButton7Click(Sender: TObject);
begin
if RadioGroup2.ItemIndex=0 then
SingleHostScan else
MultiHostScan;
end;
procedure TScanIPFm.N4Click(Sender: TObject);
var
i : integer;
begin
For i:=0 to ListView1.Items.Count-1 do
ListView1.Items[i].Checked:=True;
end;
procedure TScanIPFm.N5Click(Sender: TObject);
var
i : integer;
begin
For i:=0 to ListView1.Items.Count-1 do
ListView1.Items[i].Checked:=False;
end;
procedure TScanIPFm.N6Click(Sender: TObject);
begin
if TreeView1.Selected<>nil then
TreeView1.Selected.Delete;
end;
procedure TScanIPFm.N7Click(Sender: TObject);
begin
TreeView1.Items.Clear;
end;
procedure TScanIPFm.N1Click(Sender: TObject);
begin
if ListView1.Selected<>nil then
begin
UserForm.MaskEdit2.Text:=ListView1.Selected.Caption;
UserForm.ComboBox1.Enabled:=True;
UserForm.ShowModal;
UserForm.ComboBox1.Enabled:=False;
end;
end;
procedure TScanIPFm.SpeedButton12Click(Sender: TObject);
begin
N1Click(self);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -