• 7805阅读
  • 4回复

QT如何读取网卡序列号 [复制链接]

上一主题 下一主题
离线dming
 
只看楼主 倒序阅读 楼主  发表于: 2008-11-18
— 本帖被 XChinux 执行加亮操作(2008-11-18) —
QT如何读取网卡序列号,请各位高手指点一二,最好提供一下代码.
长的太帅也是个负担啊!
离线XChinux

只看该作者 1楼 发表于: 2008-11-18
QNetworkInterface
二笔 openSUSE Vim N9 BB10 XChinux@163.com 网易博客 腾讯微博
承接C++/Qt、Qt UI界面、PHP及预算报销系统开发业务
离线dming
只看该作者 2楼 发表于: 2008-11-18
我用了QNetworkInterface,但显示的是空值。为什么呢?

#include <QApplication>
#include <QLabel>
#include <QNetworkInterface>
#include <QMessageBox>
int main(int argc, char *argv[])
{
    QApplication app(argc, argv);
    QLabel lbl;
    QNetworkInterface *mac = new QNetworkInterface();
    QString strMac =    mac->hardwareAddress ();
    if (strMac == "")
        QMessageBox::about(0,"","null");
    else
        QMessageBox::about(0,"","not null");
    lbl.resize(300,200);
    lbl.setText(strMac);
    lbl.show();
    return app.exec();
}
长的太帅也是个负担啊!
离线zhanglimin
只看该作者 3楼 发表于: 2008-12-11
定义QNetworkinterface对象时需要指定网卡,先用静态成员函数列出所有可用的网卡QNetworkInterface::allInterfaces()
选择可用的获取就可以了。
    QList<QNetworkInterface>  NetList;
    int NetCount = 0;
    int Neti = 0;
   
    QString MacStr;
    QNetworkInterface thisNet;
    NetList = QNetworkInterface::allInterfaces();
    NetCount = NetList.count();
   
    for(Neti = 0;Neti < NetCount; Neti++)
    {
        if(NetList[Neti].isValid())
        {
            thisNet = NetList[Neti];
            break;
        }
    }
   
    MacStr = thisNet.hardwareAddress();
离线mumutouv

只看该作者 4楼 发表于: 2008-12-11
如果是Linux的话,可以通过HAL硬件抽象层来得到,很强大
快速回复
限100 字节
 
上一个 下一个