⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dlgadp.cpp

📁 ARP test mode. According to the idea we design the arithmetic for the key part, first the system sen
💻 CPP
字号:
// DlgAdp.cpp : implementation file
//

#include "stdafx.h"
#include "LANDetect.h"
#include "DlgAdp.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif
/////////////////////////////////////////////////////////////////////////////
// CDlgAdp dialog


CDlgAdp::CDlgAdp(CWnd* pParent /*=NULL*/)
	: CDialog(CDlgAdp::IDD, pParent)
{
	//{{AFX_DATA_INIT(CDlgAdp)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void CDlgAdp::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CDlgAdp)
	DDX_Control(pDX, IDC_ADP_TREE, m_treeCtrl);
	DDX_Control(pDX, IDC_ADP_LIST, m_listCtrl);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CDlgAdp, CDialog)
	//{{AFX_MSG_MAP(CDlgAdp)
	ON_NOTIFY(NM_DBLCLK, IDC_ADP_TREE, OnDblclkAdpTree)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CDlgAdp message handlers

BOOL CDlgAdp::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	/*HICON	hIcon[2];
	hIcon[0]=AfxGetApp()->LoadIcon(IDI_ICON_NO);
	hIcon[1]=AfxGetApp()->LoadIcon(IDI_ICON_YES);

	m_imageList.Create(12,12,0,3,3);
	m_imageList.Add(hIcon[0]);
	m_imageList.Add(hIcon[1]);*/

	HTREEITEM root = m_treeCtrl.InsertItem(_T("Network Adpater"));

	if(alldevs==NULL){//查找所有网卡
		if (pcap_findalldevs(&alldevs, errbuf) == -1)
			return FALSE;
	}

	pcap_if_t *tempdev=dev;
	for(dev=alldevs;dev!=NULL;dev=dev->next){
		char *temp;
		temp=dev->name;
		HTREEITEM h=m_treeCtrl.InsertItem(_T(temp),root);
		//m_treeCtrl.SetItemImage(h,0,1);
	}
	dev=tempdev;

	DWORD log = GetWindowLong(m_listCtrl.GetSafeHwnd(),GWL_STYLE);
	log |= LVS_REPORT;
	SetWindowLong(m_listCtrl.GetSafeHwnd(),GWL_STYLE,log);
	m_listCtrl.SetExtendedStyle(LVS_EX_FULLROWSELECT);
	m_listCtrl.InsertColumn(0,"Field",LVCFMT_LEFT,150);
	m_listCtrl.InsertColumn(1,"Value",LVCFMT_LEFT,300);
	m_treeCtrl.Expand(root,TVE_EXPAND);
	
	if(dev!=NULL){//当前已有网卡被绑定,则显示该网卡信息
		char temp[12];

		m_listCtrl.DeleteAllItems();
		m_listCtrl.InsertItem(0,"Name",0);
		m_listCtrl.InsertItem(1,"Description",0);
		m_listCtrl.InsertItem(2,"IP Address",0);
		m_listCtrl.InsertItem(3,"Broad Address",0);
		m_listCtrl.InsertItem(4,"SubNet Mask",0);
		m_listCtrl.InsertItem(5,"MAC Address",0);
		if(dev->name!=NULL){
			m_listCtrl.SetItemText(0,1,dev->name);
		}
		else{
			m_listCtrl.SetItemText(0,1,"Not Found");
		}
		if(dev->description!=NULL){
			m_listCtrl.SetItemText(1,1,dev->description);
		}
		else{
			m_listCtrl.SetItemText(1,1,"Not Found");
		}
		if(dev->addresses!=NULL && dev->addresses->addr!=NULL){
			iptos(((struct sockaddr_in *)dev->addresses->addr)->sin_addr.s_addr,temp);
			//myIP=temp;
			m_listCtrl.SetItemText(2,1,temp);
		}
		else{
			m_listCtrl.SetItemText(2,1,"Not Found");
		}
		if(dev->addresses!=NULL && dev->addresses->broadaddr!=NULL){
			iptos(((struct sockaddr_in *)dev->addresses->broadaddr)->sin_addr.s_addr,temp);
			m_listCtrl.SetItemText(3,1,temp);
		}
		else{
			m_listCtrl.SetItemText(3,1,"Not Found");
		}
		if(dev->addresses!=NULL && dev->addresses->netmask!=NULL){
			iptos(((struct sockaddr_in *)dev->addresses->netmask)->sin_addr.s_addr,temp);
			m_listCtrl.SetItemText(4,1,temp);
		}	
		else{
			m_listCtrl.SetItemText(4,1,"Not Found");
		}
		if(dev->addresses!=NULL && dev->addresses->dstaddr!=NULL){
			iptos(((struct sockaddr_in *)dev->addresses->dstaddr)->sin_addr.s_addr,temp);
			m_listCtrl.SetItemText(5,1,temp);
		}
		else{
			m_listCtrl.SetItemText(5,1,"Not Found");
		}
	}//当前已有网卡被绑定,责显示该网卡信息	
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CDlgAdp::OnDblclkAdpTree(NMHDR* pNMHDR, LRESULT* pResult) 
{
	// TODO: Add your control notification handler code here
	
	HTREEITEM h=m_treeCtrl.GetSelectedItem();
	if (m_treeCtrl.GetParentItem(h)==NULL)
		return;
	dev=alldevs;

	while(strcmp(dev->name,m_treeCtrl.GetItemText(h))!=0)//找到被选中网卡
		dev=dev->next;
	m_listCtrl.DeleteAllItems();
	m_listCtrl.InsertItem(0,"Name",0);
	m_listCtrl.InsertItem(1,"Description",0);
	m_listCtrl.InsertItem(2,"IP Address",0);
	m_listCtrl.InsertItem(3,"Broad Address",0);
	m_listCtrl.InsertItem(4,"SubNet Mask",0);
	m_listCtrl.InsertItem(5,"MAC Address",0);
	
	
	if(dev!=NULL){//显示选中网卡内容
		char temp[12];
		if(dev->name!=NULL){
			m_listCtrl.SetItemText(0,1,dev->name);
		}
		else{
			m_listCtrl.SetItemText(0,1,"Not Found");
		}
		if(dev->description!=NULL){
			m_listCtrl.SetItemText(1,1,dev->description);
		}
		else{
			m_listCtrl.SetItemText(1,1,"Not Found");
		}
		if(dev->addresses!=NULL && dev->addresses->addr!=NULL){
			iptos(((struct sockaddr_in *)dev->addresses->addr)->sin_addr.s_addr,temp);
			myIP=temp;
			m_listCtrl.SetItemText(2,1,temp);
		}
		else{
			m_listCtrl.SetItemText(2,1,"Not Found");
		}
		if(dev->addresses!=NULL && dev->addresses->broadaddr!=NULL){
			iptos(((struct sockaddr_in *)dev->addresses->broadaddr)->sin_addr.s_addr,temp);
			m_listCtrl.SetItemText(3,1,temp);
		}
		else{
			m_listCtrl.SetItemText(3,1,"Not Found");
		}
		if(dev->addresses!=NULL && dev->addresses->netmask!=NULL){
			iptos(((struct sockaddr_in *)dev->addresses->netmask)->sin_addr.s_addr,temp);
			m_listCtrl.SetItemText(4,1,temp);
		}	
		else{
			m_listCtrl.SetItemText(4,1,"Not Found");
		}
		if(dev->addresses!=NULL && dev->addresses->dstaddr!=NULL){
			iptos(((struct sockaddr_in *)dev->addresses->dstaddr)->sin_addr.s_addr,temp);
			m_listCtrl.SetItemText(5,1,temp);
		}
		else{
			m_listCtrl.SetItemText(5,1,"Not Found");
		}
	}
	//MessageBox("Output OK");
	*pResult = 0;}

void CDlgAdp::OnOK() 
{
	if(dev==NULL){
		MessageBox("请双击选择网卡!");
		return;
	}
	if(dev->addresses==NULL){
		MessageBox("不能选择虚拟网卡!");
		return;
	}
	MessageBox("网卡绑定成功!");
	
	CDialog::OnOK();
}

void CDlgAdp::OnCancel() 
{
	// TODO: Add extra cleanup here
	
	CDialog::OnCancel();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -