qt 获取系统主机名、UID序列号、以及磁盘空间等其他信息

2024-06-22 17:12

本文主要是介绍qt 获取系统主机名、UID序列号、以及磁盘空间等其他信息,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

使用qt接口获取系统主机名、UID序列号、以及磁盘空间、当前网络传输速率,显卡参数等

void logPCInfo()
{
    LOG_FUN(LOG_LEVEL_INFO, "Host Name: %s", QSysInfo::machineHostName().toStdString().c_str());
    LOG_FUN(LOG_LEVEL_INFO, "Machine Unique Id: %s", QSysInfo::machineUniqueId().toStdString().c_str());
    LOG_FUN(LOG_LEVEL_INFO, "Oper System Name: %s", QSysInfo::prettyProductName().toStdString().c_str());
    LOG_FUN(LOG_LEVEL_INFO, "CPU Architecture: %s", QSysInfo::currentCpuArchitecture().toStdString().c_str());

    CPUID cpuID[3] = { CPUID(2147483650), CPUID(2147483651), CPUID(2147483652) };

    std::string vendor;
    for (int i = 0; i < 3; i++) {
        vendor += std::string((const char *)&cpuID[i].EAX(), 4);
        vendor += std::string((const char *)&cpuID[i].EBX(), 4);
        vendor += std::string((const char *)&cpuID[i].ECX(), 4);
        vendor += std::string((const char *)&cpuID[i].EDX(), 4);
    }

    LOG_FUN(LOG_LEVEL_INFO, "CPU Info: %s", vendor.c_str());

    int nMB = 1024 * 1024;
    MEMORYSTATUSEX statex;
    statex.dwLength = sizeof(statex);
    GlobalMemoryStatusEx(&statex);
    ULONGLONG totalMem = statex.ullTotalPhys / nMB;
    ULONGLONG freeMem = statex.ullAvailPhys / nMB;

    LOG_FUN(LOG_LEVEL_INFO, "Memory Space: Total %d MB, Free Space: %d MB", totalMem, freeMem);

    QStorageInfo SD;
    SD.setPath(GetDataDir());
    SD.refresh();

    LOG_FUN(LOG_LEVEL_INFO, "Physical Disk Space: %d MB, Available Space: %d MB", SD.bytesTotal() / nMB, SD.bytesAvailable() / nMB);

    SYSTEM_POWER_STATUS powerStatus;
    if (GetSystemPowerStatus(&powerStatus)) 
    {
        if (powerStatus.ACLineStatus == 1)
        {
            LOG_FUN(LOG_LEVEL_INFO, "Power Status: The laptop is plugged in");
        }
        else if (powerStatus.ACLineStatus == 0) 
        {
            LOG_FUN(LOG_LEVEL_INFO, "Power Status: The laptop is running on battery");
        }
        else 
        {
            LOG_FUN(LOG_LEVEL_INFO, "Power Status: The AC line status is unknown");
        }
    }
    else 
    {
        LOG_FUN(LOG_LEVEL_INFO, "Power Status: Failed to get system power status");
    }

    IP_ADAPTER_INFO* adapterInfo;
    ULONG bufferSize = sizeof(IP_ADAPTER_INFO);
    adapterInfo = (IP_ADAPTER_INFO*)malloc(bufferSize);

    if (GetAdaptersInfo(adapterInfo, &bufferSize) == ERROR_BUFFER_OVERFLOW) {
        free(adapterInfo);
        adapterInfo = (IP_ADAPTER_INFO*)malloc(bufferSize);
        GetAdaptersInfo(adapterInfo, &bufferSize);
    }

    IP_ADAPTER_INFO* currentAdapter = adapterInfo;
    while (currentAdapter) {
        QString ipaddr = QString::fromLatin1(currentAdapter->IpAddressList.IpAddress.String, 16);
        if (ipaddr.contains("169.254.1.10"))
        {
            QString description = QString::fromLatin1(currentAdapter->Description, 132);
            m_activeNetCardName = description;
            auto activeSpeed = GetNetWorkSpeed();
            LOG_FUN(LOG_LEVEL_INFO, "Active Network card : %s, active speed: %dMbps", description.toStdString().c_str(), activeSpeed / 1000 /1000);
        }

        currentAdapter = currentAdapter->Next;
    }

    free(adapterInfo);

    QProcess cudaProcess;
    cudaProcess.start("nvidia-smi");
    cudaProcess.waitForFinished();
    QString cudaInfo = QString::fromLocal8Bit(cudaProcess.readAllStandardOutput());
    auto driverIndex = cudaInfo.indexOf("Driver Version");
    auto cudaIndex = cudaInfo.indexOf("CUDA Version");
    auto driverVer = cudaInfo.mid(driverIndex, cudaIndex - driverIndex);
    LOG_FUN(LOG_LEVEL_INFO, "GPU %s", driverVer.toStdString().c_str());
}

这篇关于qt 获取系统主机名、UID序列号、以及磁盘空间等其他信息的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1084902

相关文章

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu

Linux系统性能检测命令详解

《Linux系统性能检测命令详解》本文介绍了Linux系统常用的监控命令(如top、vmstat、iostat、htop等)及其参数功能,涵盖进程状态、内存使用、磁盘I/O、系统负载等多维度资源监控,... 目录toppsuptimevmstatIOStatiotopslabtophtopdstatnmon

Qt使用QSqlDatabase连接MySQL实现增删改查功能

《Qt使用QSqlDatabase连接MySQL实现增删改查功能》这篇文章主要为大家详细介绍了Qt如何使用QSqlDatabase连接MySQL实现增删改查功能,文中的示例代码讲解详细,感兴趣的小伙伴... 目录一、创建数据表二、连接mysql数据库三、封装成一个完整的轻量级 ORM 风格类3.1 表结构

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Qt QCustomPlot库简介(最新推荐)

《QtQCustomPlot库简介(最新推荐)》QCustomPlot是一款基于Qt的高性能C++绘图库,专为二维数据可视化设计,它具有轻量级、实时处理百万级数据和多图层支持等特点,适用于科学计算、... 目录核心特性概览核心组件解析1.绘图核心 (QCustomPlot类)2.数据容器 (QCPDataC

MySQL 获取字符串长度及注意事项

《MySQL获取字符串长度及注意事项》本文通过实例代码给大家介绍MySQL获取字符串长度及注意事项,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录mysql 获取字符串长度详解 核心长度函数对比⚠️ 六大关键注意事项1. 字符编码决定字节长度2

python3如何找到字典的下标index、获取list中指定元素的位置索引

《python3如何找到字典的下标index、获取list中指定元素的位置索引》:本文主要介绍python3如何找到字典的下标index、获取list中指定元素的位置索引问题,具有很好的参考价值,... 目录enumerate()找到字典的下标 index获取list中指定元素的位置索引总结enumerat

linux重启命令有哪些? 7个实用的Linux系统重启命令汇总

《linux重启命令有哪些?7个实用的Linux系统重启命令汇总》Linux系统提供了多种重启命令,常用的包括shutdown-r、reboot、init6等,不同命令适用于不同场景,本文将详细... 在管理和维护 linux 服务器时,完成系统更新、故障排查或日常维护后,重启系统往往是必不可少的步骤。本文

Qt如何实现文本编辑器光标高亮技术

《Qt如何实现文本编辑器光标高亮技术》这篇文章主要为大家详细介绍了Qt如何实现文本编辑器光标高亮技术,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以了解下... 目录实现代码函数作用概述代码详解 + 注释使用 QTextEdit 的高亮技术(重点)总结用到的关键技术点应用场景举例示例优化建议