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());
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/742522.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

高考志愿填报:选择好专业还是好学校?

人不走空 &#x1f308;个人主页&#xff1a;人不走空 &#x1f496;系列专栏&#xff1a;算法专题 ⏰诗词歌赋&#xff1a;斯是陋室&#xff0c;惟吾德馨 高考志愿填报&#xff1a;选择好专业还是好学校&#xff1f; 每年高考结束后&#xff0c;考生和家长面临的一个…

网络设备框架

文章目录 前言一、主要流程二、Linux网络设备驱动架构1.概述2.读入数据 总结 前言 Linux中的Ethernet驱动框架涉及到网络设备驱动程序的多个方面&#xff0c;包括初始化、注册、数据传输以及与物理层&#xff08;PHY&#xff09;的交互。以下是网络设备驱动架构的概述&#xf…

Spring Boot配置Springdoc

刚刚开通了一个公众号&#xff0c;会分享一些技术博客和自己觉得比较好的项目&#xff0c;同时会更新一些自己使用的工具和图书资料&#xff0c;后面会整理一些面试资料进行分享&#xff0c;觉得有兴趣的可以关注一下。 问题描述 之前文章有提到Spring Boot切换到Springdoc&a…

LeetCode刷题之HOT100之乘积最大子数组

2024/6/25 六月也来到了末尾&#xff0c;刷题也刷了一个半月左右。收获还是有的&#xff0c;最起码打字快了哈哈&#xff0c;做题啦&#xff01; 1、题目描述 2、逻辑分析 一眼动态规划。 解题思路 遍历数组时计算当前最大值&#xff0c;不断更新令nowMax 为当前最大值&…

【azure openaiai翻译】翻译功能测试及对比(定价,响应速度,响应限制,翻译质量)

最近在测试翻译质量&#xff0c;用到了azure ai service里的文本翻译&#xff08;简称ai翻译&#xff09;和azure openai 。 告一段落&#xff0c;辅以笔记。这两种将分别从定价&#xff0c;响应速度&#xff0c;响应限制&#xff0c;翻译质量进行讲解。 1.azure openai 对于内…

EthernetIP IO从站设备数据 转opc ua项目案例

1 案例说明 设置网关采集EthernetIP IO设备数据把采集的数据转成opc ua协议转发给其他系统。 2 VFBOX网关工作原理 VFBOX网关是协议转换网关&#xff0c;是把一种协议转换成另外一种协议。网关可以采集西门子&#xff0c;欧姆龙&#xff0c;三菱&#xff0c;AB PLC&#xff0…

2005年下半年软件设计师【上午题】试题及答案

文章目录 2005年下半年软件设计师上午题--试题2005年下半年软件设计师上午题--答案 2005年下半年软件设计师上午题–试题 2005年下半年软件设计师上午题–答案

ModbusRTU协议报文解析

ModbusRTU协议报文解析 报文格式&#xff1a; 设备地址/从站地址&#xff1a; 1个字节 指定目标设备地址&#xff08;从站地址&#xff09; 功能码&#xff1a;1个字节 功能码在modbus协议用于表示信息帧的功能&#xff0c;例如读取线圈状态、读取寄存器等。 数据&#xff…

C语言数据结构-分析期末选择题考点(一)

昔我往矣&#xff0c;杨柳依依 今我来思&#xff0c;雨雪霏霏 契子✨ 有道是&#xff1a;得选择题者得天下。临近考试&#xff0c;便总结一下数据结构选择题的常考题型吧&#xff0c;以及预测一下考点&#xff0c;一来是为了备考&#xff0c;二来可以水文。祝各位老铁 “挂柯南…

韩顺平0基础学java——第30天

p600-611 坦克大战&#xff01; 艰难推进中 坦克大战-子弹 发射子弹 1.当发射一颗子弹后&#xff0c;就相当于启动一个线程 2.玩家拥有子弹对象&#xff0c;当按下J时&#xff0c;就启动发射行为&#xff08;线程&#xff09;&#xff0c;让子弹不停移动&#xff0c;形成…

(上位机APP开发)调用华为云命令API接口给设备下发命令

一、功能说明 通过调用华为云IOT提供的命令下发API接口,实现下面界面上相同的功能。调用API接口给设备下发命令。 二、JavaScript代码 function sendUnlockCommand() {var requestUrl = "https://9bcf4cfd30.st1.iotda-app.cn-north-4.myhuaweicloud.com:443/v5/iot/60…

全国首场以AI数字内容风控为主题的大会正式官宣,首批演讲嘉宾和议题揭晓!

曾经我们感叹的“AI迎来了iPhone时刻”&#xff0c;如今已变成“iPhone迎来了AI时刻”。前段时间&#xff0c;苹果全球开发者大会的召开&#xff0c;以及闻声而起的资本市场&#xff0c;无一不再次佐证了AI的无穷想象。 从OpenAI直播演示GPT-4o和谷歌的I/O开发者大会2024&…

空调制冷剂泄漏引发健康隐患,冷媒传感器实时监测至关重要

随着夏季的脚步逐渐临近&#xff0c;气温逐渐攀升&#xff0c;空调成为了许多家庭和企业必不可少的降温设备。然而&#xff0c;近年来多起因空调制冷剂泄漏导致的健康问题和安全事故&#xff0c;让人们开始重新审视空调使用安全的重要性。其中&#xff0c;冷媒传感器的实时监测…

智能AI在线人工智能对话源码系统 完整的代安装码+搭建部署教程

系统概述 智能 AI 在线人工智能对话源码系统是一款前沿的技术解决方案&#xff0c;它融合了人工智能的强大能力&#xff0c;为用户提供了一个高效、智能的对话平台。该系统基于先进的算法和模型&#xff0c;能够理解用户的输入&#xff0c;并以高度准确和自然的方式进行回应。…

深度测试中的隐藏面消除技术

by STANCH 标签&#xff1a;#计算机图形学 #深度测试 #深度测试 #隐藏面消除 1.概述 根据我们的日常经验&#xff0c;近处的物体会挡住后面的物体&#xff0c;在三维场景中通常通过深度缓冲来实现这样的效果。深度缓冲记录着屏幕对应的每个像素的深度值。模型一开始所在的局部…

计算机工具软件安装攻略:Chrome浏览器下载安装及使用

1 Chrome简介 Chrome是谷歌公司开发的一款免费网页浏览器它快速、稳定、安全拥有简洁流畅的界面和丰富的应用程序内置了强大的谷歌搜索引擎。Chrome使用Blink浏览器引擎和V8 JavaScript引擎支持多种插件和扩展程序让浏览网页更便捷。它可以与Android手机良好同步支持跨设备浏览…

AI降重技术:论文查重率的智能解决方案

现在大部分学校已经进入到论文查重降重的阶段了。如果查重率居高不下&#xff0c;延毕的威胁可能就在眼前。对于即将告别校园的学子们&#xff0c;这无疑是个噩梦。四年磨一剑&#xff0c;谁也不想在最后关头功亏一篑。 查重率过高&#xff0c;无非以下两种原因。要么是作为“…

中霖教育怎么样?中霖教育好吗?

中霖教育怎么样?中霖教育好吗? 中霖教育包括师资力量、课程设置、教学方法等都是经过不断完善来制定的&#xff0c;我们拥有专业且经验丰富的师资队伍&#xff0c;在教学过程中更注重个性化教学方式&#xff0c;针对每个学员的需求和学习情况制定专属的学习计划。 无论是在…

养殖自动化管理系统:开启智慧养殖新篇章

在现代农业的快速演进中&#xff0c;养殖业正经历一场前所未有的技术革命。养殖自动化管理系统&#xff0c;作为这场变革的前沿科技&#xff0c;正逐步成为推动行业高效、环保、可持续发展的关键力量。本文将深入探讨自动化养殖系统如何通过精准管理、智能监控、数据驱动决策&a…

无线领夹麦克风哪个牌子好,一篇教你无线领夹麦克风怎么挑选!

对于领夹麦克风这一术语&#xff0c;可能在非专业人士听来颇为生僻&#xff0c;然而在互联网行业工作者和短视频博主中&#xff0c;它却是一个常见的必备工具。如果你正计划成为一名短视频创作者&#xff0c;或者即将涉足视频拍摄与直播等互动媒体活动&#xff0c;那么熟悉并掌…