这一节主要介绍如何获取设备列表,比较简单

获取设备列表主要是在CAdpDlg中完成,也就是对应之前创建的选择适配器模块,如图:

当打开选择适配器对话框后,在列表视图控件中显示当前主机所有适配器及适配器的描述,当选中一个适配器时,在下方的编辑框中会显示当前选中的适配器,单击绑定会提示网卡绑定成功。

本节中代码都在AdpDlg.cpp中完成,当然变量的声明要在其对应的头文件中去做,这里就不再叙述。

首先要获取设备列表,在OnInitDialog函数中加入如下代码:

 if (pcap_findalldevs_ex(PCAP_SRC_IF_STRING, NULL, &alldevs, errbuf) == -)
return FALSE;

这样主机上的所有设备就放入alldevs这个链表中,我们将链表中的每个设备依次输出到列表视图控件中去:

 for(d=alldevs; d; d=d->next)
{
m_list1.InsertItem(,(CString)d->name); //d->name的类型是char *,需要强制转换为CString才能在InsertItem中显示
m_list1.SetItemText(,,(CString)d->description);
}
d = NULL; //清空以便其他函数使用

注意在MFC中不接受char类型的字符串变量,所有字符串变量应该是用CString类型,类似与C++中的string类型。接下来我们想要在列表视图控件中选择一个设备,然后在下面的编辑框中显示,这时需要列表视图控件的一个触发函数。在属性也中选择对应列表视图空间的属性,选择控制事件(闪电),然后找到NM_CLICK,点击一下就会生成函数,在函数中添加如下代码:

 void CAdpDlg::OnNMClickList1(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMITEMACTIVATE pNMItemActivate = reinterpret_cast<LPNMITEMACTIVATE>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = ; NMLISTVIEW *pNMListView = (NMLISTVIEW*)pNMHDR; if (- != pNMListView->iItem) // 如果iItem不是-1,就说明有列表项被选择
{
// 获取被选择列表项第一个子项的文本
adpname = m_list1.GetItemText(pNMListView->iItem, );
// 将选择的语言显示与编辑框中
SetDlgItemText(IDC_EDIT1, adpname);
}
}

之后根据用户的选择返回获取的设备:

 //返回已选中设备
pcap_if_t* CAdpDlg::GetDevice()
{
if(adpname)
{
for(d=alldevs; d; d=d->next)
if(d->name == adpname)
return d;
}
return NULL;
}

单击绑定时检查是否合法:

 void CAdpDlg::OnBnClickedOk()
{
// TODO: 在此添加控件通知处理程序代码
d = GetDevice();
if(d)
{
MessageBox(_T("网卡绑定成功!"));
CDialogEx::OnOK();
}
else
MessageBox(_T("请选择要绑定的网卡"));
}

这样获取模块就完成的差不多了

下一节 MFC+WinPcap编写一个嗅探器之五(过滤模块)

MFC+WinPcap编写一个嗅探器之四(获取模块)的更多相关文章

  1. MFC+WinPcap编写一个嗅探器之三(WinPcap)

    介绍程序模块前,这一节再复习一下WinPcap WinPcap开发一个嗅探器的主要步骤如下: (1)获取嗅探设备 WinPcap提供了pcap_findalldevs_ex() 函数来实现这个功能: ...

  2. MFC+WinPcap编写一个嗅探器之六(分析模块)

    这一节是程序的核心,也是最复杂的地方 首先需要明白的一点是,一般对于一个有界面的程序来说,往往需要多线程.本程序中除了界面线程外,抓包需要另外创建一个新的线程.在写抓包函数之前,首先要将前面两个模块的 ...

  3. MFC+WinPcap编写一个嗅探器之五(过滤模块)

    这一节主要介绍如何获设置捕获过滤,这里的过滤是指在捕获前过滤 设置捕获过滤主要是在CFilterDlg中完成,也就是对应之前创建的设置过滤规则对话框,如图: 首先要根据用户的选择来生成一个合法的过滤规 ...

  4. MFC+WinPcap编写一个嗅探器之一(准备)

    知识准备: MFC:http://www.jizhuomi.com/software/257.html WinPcap:http://www.ferrisxu.com/WinPcap/html/ind ...

  5. MFC+WinPcap编写一个嗅探器之七(协议)

    这一节是本系列教程的结尾了,内容也比较简单,主要是对网络协议进行分析,其实学过计算机网络的同学完全可以略过 在整个项目中需要有一个头文件存放各层协议的头部定义,我把它们放在了head.h中,这个头文件 ...

  6. MFC+WinPcap编写一个嗅探器之零(目录)

    零零散散写了三天,完成了编写嗅探器的文章,旨在让自己加深印象,是初学者少走一些弯路.因为先前未接触MFC,之后也不打算精通,完全是0基础,所以文章技术含量不高,但难点基本上都都包括了,凑合这看吧,接下 ...

  7. MFC+WinPcap编写一个嗅探器之二(界面)

    选择新建->项目->MFC应用程序->基于对话框完成,这里文件名为sniffer 打开资源视图中的Dialog列表,打开项目总默认创建的话框,将对话框中的所有控件删除,之后按照最终效 ...

  8. 从头开始编写一个Orchard网上商店模块(6) - 创建购物车服务和控制器

    原文地址: http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-webshop-module-from-scratch-pa ...

  9. 从头开始编写一个Orchard网上商店模块(5) - 创建和渲染ProductCatalog的内容类型

    原文地址: http://skywalkersoftwaredevelopment.net/blog/writing-an-orchard-webshop-module-from-scratch-pa ...

随机推荐

  1. VsCode搭建Java开发环境(Spring Boot项目创建、运行、调试)

    源码地址:https://github.com/YANGKANG01/Spring-Boot-Demo 安装扩展 安装如下两个主要扩展即可,这两个扩展已关联java项目开发主要使用的maven.spr ...

  2. isscroll插件 实现下拉加载 上啦刷新 转

    http://www.jb51.net/article/98394.htm 下面是别人的代码 <!DOCTYPE html> <html> <head> <m ...

  3. bzoj千题计划119:bzoj1029: [JSOI2007]建筑抢修

    http://www.lydsy.com/JudgeOnline/problem.php?id=1029 把任务按截止时间从小到大排序 如果当前时间+当前任务耗时<=当前任务截止时间,把这个任务 ...

  4. C#_连接数据库实现 登录注册界面

    //编写登录界面逻辑 using System; using System.Collections.Generic; using System.ComponentModel; using System ...

  5. python 压缩每周生成的数据文件

    为了便于整理部分业务数据,以及存储管理, 写了此脚本.后期如果有需求,再改一下. #!/usr/bin/env python #coding:utf8 import os,sys,time,comma ...

  6. [hadoop]mapreduce原理简述

    1.用于map的输入,先将输入数据切分成相等的分片,为每一个分片创建一个map worker,这里的切片大小不是随意订的,一般是与HDFS块大小一致,默认是64MB,一个节点上存储输入数据切片的最大s ...

  7. 20165320 Java实验三:敏捷开发与XP实践

    实验内容: 敏捷开发与XP实践 一 实验要求: 安装alibaba 插件,解决代码中的规范问题在IDEA中使用工具(Code->Reformate Code)把下面代码重新格式化,再研究一下Co ...

  8. linux 配置免密码登陆

    在使用scp命令传输的时候需要密码 配置免密码登陆 ssh-keygen -t rsa (四个回车) 执行命令完成后,会生成两个文件id_rsa(私钥).id-rsa.pub(公钥) 将公钥拷贝到要免 ...

  9. linux limits研究

    ---------------------------------------------------------------------------------------------------- ...

  10. shell脚本练习题->1

    猜随机数的大小 描述: 写一个猜数字脚本,当用户输入的数字和预设数字(随机生成一个0-100的数字)一样时,直接退出,否则让用户一直输入:并且提示用户输入的数字比预设数字大或者小 分析: 1:随机数字 ...