📄 ethernetspydlg.cpp
字号:
// EthernetSpyDlg.cpp : implementation file
//
#include "stdafx.h"
#include "packet32.h"
#include "EthernetSpy.h"
#include "EthernetSpyReader.h"
#include "EthernetSpyDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CEthernetSpyDlg dialog
CEthernetSpyDlg::CEthernetSpyDlg(EthernetSpyReader* _SpyReader, CWnd* pParent /*=NULL*/)
: CDialog(CEthernetSpyDlg::IDD, pParent)
{
SpyReader = _SpyReader;
uiTimer = 0;
uiPos = 0;
uiLastRead = SpyReader->StoredPkt;
MyParent = pParent;
IsScrolling = TRUE;
//{{AFX_DATA_INIT(CEthernetSpyDlg)
// NOTE: the ClassWizard will add member initialization here
//}}AFX_DATA_INIT
}
void CEthernetSpyDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
//{{AFX_DATA_MAP(CEthernetSpyDlg)
DDX_Control(pDX, IDC_SPYLIST, m_SpyList);
//}}AFX_DATA_MAP
}
BEGIN_MESSAGE_MAP(CEthernetSpyDlg, CDialog)
//{{AFX_MSG_MAP(CEthernetSpyDlg)
ON_WM_TIMER()
ON_BN_CLICKED(IDC_START, OnStart)
ON_BN_CLICKED(IDC_STOP, OnStop)
ON_WM_CLOSE()
//}}AFX_MSG_MAP
END_MESSAGE_MAP()
/////////////////////////////////////////////////////////////////////////////
// CEthernetSpyDlg message handlers
BOOL CEthernetSpyDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// TODO: Add extra initialization here
uiTimer = SetTimer(3, SpyReader->RefreshTime, NULL);
return TRUE; // return TRUE unless you set the focus to a control
// EXCEPTION: OCX Property Pages should return FALSE
}
void CEthernetSpyDlg::OnTimer(UINT nIDEvent)
{
TCHAR Testo[255], Src[255], Dest[255], RawData[255];
PACKET_INFO Packet;
UINT uiNumPkt, StoredPkt;
UINT i, j;
StoredPkt = SpyReader->StoredPkt;
uiNumPkt = StoredPkt - uiLastRead;
for (j = 0; j < uiNumPkt; j++)
{
EnterCriticalSection(&(SpyReader->CritSecCounters));
{
memcpy( &Packet, &(SpyReader->Pkt[(uiLastRead + j) % SpyReader->MaxPkt]), sizeof(PACKET_INFO) );
}
LeaveCriticalSection(&(SpyReader->CritSecCounters));
for(i=0; i<12; i+=2)
{
sprintf(&(Dest[i]), TEXT("%02X"), Packet.Frame.DestAddr[i/2]);
}
for(i=0; i<12; i+=2)
{
sprintf(&(Src[i]), TEXT("%02X"), Packet.Frame.SrcAddr[i/2]);
}
for(i=0; i<20; i+=2)
{
sprintf(&(RawData[i]), TEXT("%02X"), Packet.Frame.Dati[i/2]);
}
sprintf(Testo, TEXT("%5lu %5lu %s %s %02X%02X %s"), Packet.Num, Packet.Len, Dest, Src, Packet.Frame.Type[0], Packet.Frame.Type[1], RawData);
m_SpyList.InsertString(-1, Testo);
}
uiLastRead = StoredPkt;
if (IsScrolling)
m_SpyList.SendMessage (WM_VSCROLL, SB_BOTTOM);
}
void CEthernetSpyDlg::OnStart()
{
IsScrolling = TRUE;
GetDlgItem(IDC_START)->EnableWindow(FALSE);
GetDlgItem(IDC_STOP)->EnableWindow(TRUE);
}
void CEthernetSpyDlg::OnStop()
{
IsScrolling = FALSE;
GetDlgItem(IDC_START)->EnableWindow(TRUE);
GetDlgItem(IDC_STOP)->EnableWindow(FALSE);
}
void CEthernetSpyDlg::OnClose()
{
MyParent->SendMessage( WM_SPYDLGCLOSE );
CDialog::OnClose();
KillTimer(uiTimer);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -