📄 dlgadp.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 + -