DLL 获取网络连接状态

1.Win32 网络连接 dll 文件名叫:wininet.dll,位置在 C:\WINDOWS\system32 目录下,将
其拷贝到项目工程下

#include <QLibrary>
#include <QLabel>

#define INTERNET_CONNECTION_MODEM 1 //拨号
#define INTERNET_CONNECTION_LAN 2	//局域网
#define INTERNET_CONNECTION_PROXY 4	//代理上网
#define INTERNET_CONNECTION_MODEM_BUSY 8	//代理被占用
typedef bool(*ConnectFun)(int* lpdwFlags,int dwReserved);	//定义函数指针

MainWindow::MainWindow(QWidget *parent)
    : QMainWindow(parent)
    , ui(new Ui::MainWindow)
{
    ui->setupUi(this);
    // QLabel 输出信息用
    QLabel *label = new QLabel(this);
    label->setGeometry(QRect(50,50,200,25));

    QLibrary myLib("wininet.dll");
    //判断是否正确加载
    if(myLib.load())
    {
        bool bOnline=false;//是否在线
        int flags;
        //获取 dll 库中的函数 InternetGetConnectedState 函数地
        ConnectFun myConnect=(ConnectFun)myLib.resolve("InternetGetConnectedState");
 /*      QFunctionPointer QLibrary::resolve(const char *symbol) 使用模板:
  *
  *      typedef int (*AvgFunction)(int, int);
  *      AvgFunction avg = (AvgFunction) library->resolve("avg");
  *      if (avg)
  *         return avg(5, 8);
  *       else
  *          return -1;
  */
        //判断是否连网
        bOnline = myConnect(&flags,0);
        if(bOnline)
        {
            if(flags &INTERNET_CONNECTION_MODEM)
            {
                label->setText("已连接-连接模式为:拨号上网");
            }
            else if(flags & INTERNET_CONNECTION_LAN)
            {
                label->setText("已连接-连接模式为:局域网");
            }
            else if(flags & INTERNET_CONNECTION_PROXY)
            {
                label->setText("已连接-连接模式为:代理上网");
            }
            else
            {
                label->setText("连接失败!!!");
            }
        }
        else
        {
            label->setText("没有网络连接");
        }
    }
    else
    {
        label->setText("DLL 加载失败!!!");
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值