📄 unit1.pas
字号:
unit Unit1;
interface
uses
Windows, Messages, IGMPBM, SysUtils, Classes, Graphics, Controls,
Forms, Dialogs,
StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
list1: TListBox;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Button2: TButton;
Button3: TButton;
Button4: TButton;
Edit4: TEdit;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Label5: TLabel;
Edit5: TEdit;
Button5: TButton;
Button6: TButton;
Button7: TButton;
Panel1: TPanel;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button3Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure list1Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
procedure Button7Click(Sender: TObject);
procedure Button6Click(Sender: TObject);
procedure Button5Click(Sender: TObject);
private
blist: tigmlist;
procedure RefreshList;
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.DFM}
{procedure pause(const nPause: double); far;
var
l_StartTime: tdatetime;
begin
l_StartTime := now;
repeat
freeevent;
until Now > l_StartTime + nPause * (1 / 24 / 60 / 60);
end;}
procedure TForm1.FormCreate(Sender: TObject);
begin
blist := tigmlist.Create;
edit1.MaxLength := maxip;
end;
procedure TForm1.Button1Click(Sender: TObject);
var p: pointer;
begin
p := list1.Items.Objects[list1.itemindex];
with tigmtype(p^) do begin
blist.SetTargetPort(TargetIP, targetport,strtoint(edit2.text));
blist.SetTargetPacketSize(TargetIP, targetport,strtoint(edit3.text));
blist.SetTargetTimes(TargetIP, targetport,strtoint(edit4.text));
end;
RefreshList;
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
if assigned(blist) then
blist.destroy;
end;
function fillstr(str: string; width: integer; alright: boolean = false): string;
var s: string;
begin
setlength(s, width);
if not alright then begin
move(str[1], s[1], length(str));
fillchar(s[length(str) + 1], width - length(str), 32);
end
else begin
move(str[1], s[width - length(str) + 1], length(str));
fillchar(s[1], width - length(str), 32);
end;
result := s;
end;
procedure TForm1.RefreshList;
var i: integer;
p: pointer;
begin
list1.items.clear;
list1.items.add('TargetIP Port Size Times');
with blist do begin
for i := 0 to BMLIST.count - 1 do begin
p := bmlist.objects[i];
with tigmtype(p^) do begin
list1.Items.AddObject(fillstr(TargetIP, 12) + ' ' +
fillstr(inttostr(TargetPort), 5, true) + ' ' +
fillstr(inttostr(packetsize), 5, true) + ' ' +
fillstr(inttostr(Times), 5, true), p);
end;
end;
end;
end;
procedure TForm1.Button3Click(Sender: TObject);
var p: pointer;
begin
if list1.ItemIndex = -1 then exit;
p := list1.Items.Objects[list1.itemindex];
with tigmtype(p^) do begin
blist.Deletetarget(TargetIP,targetport);
end;
RefreshList;
end;
procedure TForm1.Button2Click(Sender: TObject);
//var ip: tigmtype;
begin
addip(blist, edit1.text, strtoint(edit2.text), strtoint(edit3.text),
strtoint(edit4.text));
{//ip.TargetIP] :=edit1.text;
fillchar(ip.targetip[0], sizeof(ip.targetip), #0);
move(edit1.text[1], ip.targetip[0], length(edit1.text));
ip.TargetPort := strtoint(edit2.text);
ip.packetsize := strtoint(edit3.text);
ip.Times := strtoint(edit4.text);
blist.Addtarget(ip);}
RefreshList;
end;
procedure TForm1.list1Click(Sender: TObject);
var p: pointer;
begin
if tag = list1.itemindex then exit;
tag := list1.itemindex;
if list1.itemindex = -1 then exit;
p := list1.Items.Objects[list1.itemindex];
if p = nil then exit;
with tigmtype(p^) do begin
edit1.text := TargetIP;
edit2.text := inttostr(TargetPort);
edit3.text := inttostr(packetsize);
edit4.text := inttostr(Times);
end;
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
if not blist.Suspended then begin
blist.delay := strtoint(edit5.text);
blist.Boom;
end
else
blist.Resume;
(sender as tbutton).enabled := false;
end;
procedure TForm1.Button7Click(Sender: TObject);
begin
blist.Validate;
RefreshList;
end;
procedure TForm1.Button6Click(Sender: TObject);
begin
blist.Suspend;
button4.Enabled := blist.Suspended;
end;
procedure TForm1.Button5Click(Sender: TObject);
begin
blist.cancel;
application.ProcessMessages ;
button4.Enabled := not blist.running;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -