Qt获取设备信息

概述:

1.给大家分享个小案例,望日后开发上会对大家有所帮助;
2.使用Qt获取当前PC的详细信息,例如:pc主机名、当前ip地址(ipv4)、cpu ID、当前使用ip的 MAC地址等等;
3.案例背景是要用于软件授权加密使用;

代码示例:

.h:

#pragma once
#include <QString>

class GlobalApiClass
{

private:
	GlobalApiClass();
	~GlobalApiClass();

public:
	static GlobalApiClass &GetInstance()
	{
		static GlobalApiClass instance;
		return instance;
	};

	/*
	*  @brief:获取主机名称
	*/
	QString getUserName();
	/*
	*  @brief:获取本机IP
	*/
	QString getAddIP();
	/*
	*  @brief:获取本机MAC地址
	*/
	QString getHostMacAddress();
	/*
	*  @brief:获取硬盘
	*/
	QString getDiskdrive();
	/*
	*  @brief:获取本机IP地址
	*/
	QString getCpuID();
};

.cpp:

#include "GlobalApiClass.h"
#include <QProcess>
#include <QtNetWork/QHostInfo>
#include <QtNetWork/QHostAddress>
#include <QtNetWork/QNetworkInterface>

GlobalApiClass::GlobalApiClass()
{
}

GlobalApiClass::~GlobalApiClass()
{
	
}

QString GlobalApiClass::getUserName()
{
	return QHostInfo::localHostName();
}

QString GlobalApiClass::getAddIP()
{
	QList<QHostAddress> list = QNetworkInterface::allAddresses();
	foreach(QHostAddress address, list)
	{
		if (address.protocol() == QAbstractSocket::IPv4Protocol)
			//我们使用IPv4地址
			return address.toString();
	}
	return 0;
}

QString GlobalApiClass::getHostMacAddress()
{
	QList<QNetworkInterface> nets = QNetworkInterface::allInterfaces();// 获取所有网络接口列表
	int nCnt = nets.count();
	QString strMacAddr = "";
	for (int i = 0; i < nCnt; i++)
	{
		// 如果此网络接口被激活并且正在运行并且不是回环地址,则就是我们需要找的Mac地址
		if (nets[i].flags().testFlag(QNetworkInterface::IsUp) && nets[i].flags().testFlag(QNetworkInterface::IsRunning) && !nets[i].flags().testFlag(QNetworkInterface::IsLoopBack))
		{
			strMacAddr = nets[i].hardwareAddress();
			break;
		}
	}
	return strMacAddr;
}

QString GlobalApiClass::getDiskdrive()
{
	QProcess p(0);
	p.start("wmic diskdrive get serialnumber");
	p.waitForStarted();
	p.waitForFinished();
	QString result = QString::fromLocal8Bit(p.readAllStandardOutput());
	QStringList list = result.split("\r\n");
	if (list.size() < 1)
		return "error";
	return list.at(1).trimmed();
}

QString GlobalApiClass::getCpuID()
{
	QString cpu_id = "";
	QProcess p(0);
	p.start("wmic CPU get ProcessorID");    
	p.waitForStarted();
	p.waitForFinished();
	cpu_id = QString::fromLocal8Bit(p.readAllStandardOutput());
	cpu_id = cpu_id.remove("ProcessorId").trimmed();
	return cpu_id;
}

打印输出:

	qDebug() <<QString::fromLocal8Bit("主机名:") << GlobalApiClass::GetInstance().getUserName();
	qDebug() << QString::fromLocal8Bit("IP:")<< GlobalApiClass::GetInstance().getAddIP();
	qDebug() << QString::fromLocal8Bit("硬盘ID:")<< GlobalApiClass::GetInstance().getDiskdrive();
	qDebug() << QString::fromLocal8Bit("Mac地址:")<< GlobalApiClass::GetInstance().getHostMacAddress();
	qDebug() << QString::fromLocal8Bit("cpu ID:")<< GlobalApiClass::GetInstance().getCpuID();

"主机名:" "RD-04"
"IP:" "192.168.1.1"
"硬盘ID:" "ZN18JXN8"
"Mac地址:" "C4:66:16:3A:09:56"
"cpu ID:" "BFEBFBFF000908ED"

拓展:

 	//获取cpu名称:wmic cpu get Name
    //获取cpu核心数:wmic cpu get NumberOfCores
    //获取cpu线程数:wmic cpu get NumberOfLogicalProcessors
    //查询cpu序列号:wmic cpu get processorid
    //查询主板序列号:wmic baseboard get serialnumber
    //查询BIOS序列号:wmic bios get serialnumber
    //查看硬盘:wmic diskdrive get serialnumber

over:

欢迎大家关注作者在文末评论、点赞、转发以及批评指正!
如果大家有更好的方法或有问题可以在文末评论一起讨论!
共同学习!
共同进步!

文末一句话:

不论荣辱,不论悲欢,皆是过往,多说无益,多想伤身。
共勉!

Qt C++中,获取设备的蓝牙连接信息通常涉及到QBluetooth API,这是一个用于处理蓝牙功能的模块。以下是基本步骤: 1. 首先,你需要在项目中包含必要的库头文件: ```cpp #include <QtBluetooth/QBluetooth> #include <QtBluetooth/QBluetoothAddress> ``` 2. 初始化蓝牙系统并检查权限: ```cpp QBluetooth::setDeviceDiscoveryEnabled(true); if (!QBluetoothSystemInfo::error()) { QBluetoothDeviceInfoList devices = QBluetoothLocalManager::availableDevices(); } ``` 这会开启蓝牙搜索,并获取到当前可用的蓝牙设备列表。 3. 遍历设备列表获取连接信息: ```cpp for (const QBluetoothDeviceInfo &device : devices) { QString name = device.name(); if (device.isPaired()) { qDebug() << "Paired device: Name - " << name; // 如果你想获取更详细的信息,可以使用QBluetoothDeviceInfo: QBluetoothDeviceInfo info(device); QBluetoothServiceInfoList services = info.serviceInfos(); // ...处理服务信息... } else { qDebug() << "Unpaired device: Name - " << name; } } ``` `isPaired()`函数用于判断设备是否已经配对,`serviceInfos()`则可用于获取设备的服务信息。 4. 蓝牙操作可能需要用户授权,记得处理权限请求: ```cpp QBluetoothAuthorization::Request request = QBluetoothAuthorization::RequestDiscoverable; QBluetooth::requestAuthorization(request); ``` 注意:以上示例是在桌面应用程序中,对于移动设备等其他环境,蓝牙管理可能会有所不同。此外,实际使用时需确保遵循蓝牙标准和应用商店的相关规定。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值