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 加载失败!!!");
}
}