📄 main.pas
字号:
unit Main;
interface
uses
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
Snoop, StdCtrls, Buttons, ExtCtrls;
type
TMainForm = class(TForm)
cbxAdapter: TComboBox;
btnOpen: TButton;
btnClose: TButton;
Snoop1: TSnoop;
edFileName: TEdit;
sbtFileName: TSpeedButton;
sdFileName: TSaveDialog;
Label1: TLabel;
Label2: TLabel;
Timer1: TTimer;
lblCaptureCount: TLabel;
SnoopDump1: TSnoopDump;
procedure FormCreate(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure btnOpenClick(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure sbtFileNameClick(Sender: TObject);
procedure Snoop1Capture(Sender: TObject; PacketHeader: PPCAP_PKTHDR;
EthernetHeader: PETHERNET_HDR);
procedure Timer1Timer(Sender: TObject);
private
{ Private declarations }
CaptureCount: Integer;
procedure SetControl;
public
{ Public declarations }
end;
var
MainForm: TMainForm;
implementation
{$R *.DFM}
procedure TMainForm.SetControl;
var
Active: Boolean;
begin
Active := Snoop1.Active;
cbxAdapter.Enabled := not Active;
btnOpen.Enabled := not Active;
btnClose.Enabled := Active;
end;
procedure TMainForm.FormCreate(Sender: TObject);
begin
cbxAdapter.Items := Snoop1.AdapterDescriptions;
cbxAdapter.ItemIndex := 0;
end;
procedure TMainForm.FormShow(Sender: TObject);
begin
SetControl;
end;
procedure TMainForm.btnOpenClick(Sender: TObject);
begin
if edFileName.Text = '' then
begin
ShowMessage('Invalid FileName');
exit;
end;
Snoop1.AdapterIndex := cbxAdapter.ItemIndex;
Snoop1.Open;
if not Snoop1.Active then
begin
ShowMessage(Snoop1.Error);
exit;
end;
SnoopDump1.Open(Snoop1.PCap, edFileName.Text);
if not SnoopDump1.Active then
begin
ShowMessage(SnoopDump1.Error);
Snoop1.Close;
exit;
end;
SetControl;
CaptureCount := 0;
Timer1.Enabled := true;
end;
procedure TMainForm.btnCloseClick(Sender: TObject);
begin
if Snoop1.Active then Snoop1.Close;
if SnoopDump1.Active then SnoopDump1.Close;
SetControl;
Timer1.Enabled := false;
end;
procedure TMainForm.sbtFileNameClick(Sender: TObject);
begin
if sdFileName.Execute then
edFileName.Text := sdFileName.FileName;
end;
procedure TMainForm.Snoop1Capture(Sender: TObject;
PacketHeader: PPCAP_PKTHDR; EthernetHeader: PETHERNET_HDR);
begin
SnoopDump1.Write(PacketHeader, PChar(EthernetHeader));
inc(CaptureCount);
end;
procedure TMainForm.Timer1Timer(Sender: TObject);
begin
lblCaptureCount.Caption := IntToStr(CaptureCount);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -