Windows Native WIFI 编程

背景:

当应用程序需要管理WIFI连接时,可以利用Windows Native WIFI 进行编程,近期结合QT实现了MSDN上提供的各个接口。


关于具体的Native WIFI 编程参考以下链接:

           https://msdn.microsoft.com/en-us/library/windows/desktop/aa816369(v=vs.85).aspx

毕竟我是拿来主义。


具体的代码实现如下:

头文件

/*****************************************
功能: 本类利用Native wifi 编程,实现wifi连接功能,具体有以下功能:
	 1. 列举当前设备可用的无线接口,即无线网卡
	 2. 列举当前可用的无线网络
	 3. 查询当前连接的网络
	 4. 连接、断开网络
	 5. 实时刷新当前WIFI连接

	 本例中,WIFI名称和WIFI热点指同一个值

******************************************/
#ifndef Q_WINDOW_NATIVE_WIFI_H
#define Q_WINDOW_NATIVE_WIFI_H

#include <qt_windows.h>
#include <wlanapi.h>
#include <QString>
#include <QMap>
#include <QTimer>
#include <qobject.h>

#pragma comment(lib, "wlanapi.lib")

struct WifiNameAndQuality
{
	WifiNameAndQuality()
	{

	}

	WifiNameAndQuality(QString strName, int nQuality)
	{
		m_strName = strName;
		m_nQuality = nQuality;
	}

	// 比较函数
	bool operator()(const WifiNameAndQuality &wifi1, const WifiNameAndQuality &wifi2)
	{
		if (wifi1.m_nQuality > wifi2.m_nQuality)
		{
			return true;
		}

		return false;
	}

	// WIFI 名称
	QString m_strName;

	// 信号强度
	int m_nQuality;
};


class QWindowNativeWifi: public QObject
{
	Q_OBJECT
public:
	
	// 获取wifi管理类
	static QWindowNativeWifi *instance();


    // 释放内存空间
	static void release();

	// 打开到服务端的连接
	// 返回值: 若成功返回ERROR_SUCCESS,否则返回失败的代码
	DWORD wlanOpenHandle();

	// 列举当前可用的无线网卡
	DWORD wlanEnumInterfaces();

	// 通过WlanQueryInterface函数,查询当前接口连接的无线网络
	DWORD wlanQueryInterface();

	// 对某一无线网卡进行扫描,也就是重新扫描是否有可用无线网络
	DWORD wlanScan();

	// 列举出当前网络接口的可用无线网络
	DWORD wlanGetAvailableNetworkList();

	// 返回当前可用的无线网络
	std::list<WifiNameAndQuality> getNets() const;

	// 获取每一个WIFI配置文件
	// 参数: wifiName 无线网络名称
	DWORD wlanGetProfile(const QString &wifiName);

	// 设置wifi的配置文件
	// 参数:  wifiName 无线网络名称
	//       strPassword 无线网络的密码
	//       wcProfile xml格式的配置文件
	DWORD wlanSetProfile(const QString &wifiName,  const QString &strPassword, const wchar_t * wcProfile = NULL);

	// 删除wifi的配置文件
	// 参数: wifiName 无线网络名称
	DWORD wlanDeleteProfile(const QString &wifiName);

	// 连接无线网络
	// 参数: wifiName 无线网络名称
	DWORD wlanConnect(const Q
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值