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.mzph.cn/diannao/32101.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Open3D点云处理学习

Color ICP Colored point cloud registration — Open3D 0.11.0 documentation Colored point cloud registration - Open3D 0.18.0 documentation 展示了使用color-icp结果 对比gicp错误处理结果 intel自己的论文 Colored Point Cloud Registration Revisited 优化方程 参…

临时关闭Windows安全中心

在使用WindowsOS是&#xff0c;微软安全中心是我们必不可少的安全防护&#xff0c;但有时我们也会产生想要将其关闭的需求&#xff0c;下面将要介绍如何临时关闭Windows的安全中心 一、打开安全中心、选择“病毒与威胁防护”&#xff0c;点击“管理设置” 之后将其实时保护关闭…

PPT的精细化优化与提升策略

&#x1f44f;&#x1f44f;&#x1f44f;欢迎来到我的博客 ! 亲爱的朋友们&#xff0c;欢迎您们莅临我的博客&#xff01;这是一个分享知识、交流想法、记录生活的温馨角落。在这里&#xff0c;您可以找到我对世界独特视角的诠释&#xff0c;也可以与我一起探讨各种话题&#…

openjudge_2.5基本算法之搜索_8465:马走日

题目 8465:马走日 总时间限制: 1000ms 内存限制: 65536kB 描述 马在中国象棋以日字形规则移动。 请编写一段程序&#xff0c;给定n*m大小的棋盘&#xff0c;以及马的初始位置(x&#xff0c;y)&#xff0c;要求不能重复经过棋盘上的同一个点&#xff0c;计算马可以有多少途径遍…

ROS中C++、Python完整的目录结构

文章目录 在ROS中&#xff0c;一个典型的C软件包目录结构通常包括以下几个主要目录&#xff1a; include&#xff1a;该目录包含C头文件&#xff08;.hpp或者.h文件&#xff09;&#xff0c;用于声明类、函数、变量等。通常&#xff0c;这些头文件定义了ROS节点、消息类型、服务…

轻量级日志系统——Loki

目录 一、loki简介 二、Loki 快速上手 第一步安装 Loki 第二步安装 Promtail 第三步安装granafa 三、LogQL 语法 四、Loki收集nginx日志 1、修改nginx配置 2、nginx服务器上安装promtail 3、添加doshbarod 一、loki简介 Loki是 Grafana Labs 团队最新的开源项目&am…

什么是负载均衡技术?

随着网络技术的快速发展&#xff0c;互联网行业也越来越广泛&#xff0c;人们的日常生活中也离不开网络技术&#xff0c;大量的用户进行浏览访问网站时&#xff0c;企业会使用负载均衡技术&#xff0c;降低当前网站的负载&#xff0c;以此来提高网站的访问速度。 今天小编就来给…

【Springcloud微服务】Docker上篇

&#x1f525; 本文由 程序喵正在路上 原创&#xff0c;CSDN首发&#xff01; &#x1f496; 系列专栏&#xff1a;Springcloud微服务 &#x1f320; 首发时间&#xff1a;2024年6月22日 &#x1f98b; 欢迎关注&#x1f5b1;点赞&#x1f44d;收藏&#x1f31f;留言&#x1f4…

新闻管理与推荐系统Python+Django+协同过滤推荐算法+管理系统

一、介绍 新闻管理与推荐系统。本系统使用Python作为主要开发语言开发的一个新闻管理与推荐的网站平台。 网站前端界面采用HTML、CSS、BootStrap等技术搭建界面。后端采用Django框架处理用户的逻辑请求&#xff0c;并将用户的相关行为数据保存在数据库中。通过Ajax技术实现前后…

`QDBusConnection` 和 `QDBusInterface`区别

QDBusConnection 和 QDBusInterface 是 Qt 框架中用于 D-Bus 通信的两个不同类&#xff0c;它们有不同的用途和功能。 QDBusConnection QDBusConnection 代表一个 D-Bus 连接。它负责管理和维护与 D-Bus 的连接。这个类提供了多种方法&#xff0c;用于在 D-Bus 上进行信号和方法…

【深度神经网络 (DNN)】

深度神经网络 (DNN) 深度神经网络 (DNN) 是机器学习领域中一种强大的工具&#xff0c;它由多层神经元组成&#xff0c;能够学习复杂的数据模式&#xff0c;解决各种任务&#xff0c;如图像识别、语音识别、自然语言处理等。 DNN 的构成&#xff1a; 神经元: DNN 的基本单元&…

jasypt对yml文件进行加密解密

目录 0.背景 1.依赖 2.yml文件 3.加密操作 0.背景 在日常开发中&#xff0c;我们一般会把账号密码以及一些用到的各种第三方服务的Access_Key都放入yml文件中&#xff0c;这时就有必要对yml文件进行加密处理了&#xff0c; jasypt是一款简单的对yml加密的工具 1.依赖 &l…

MongoDB异地备份数据文件脚本(带日志打印,便于排查)

此脚本是以文件夹的形式备份&#xff0c;非压缩包形式 如需备份成加密压缩包&#xff0c;可用此脚本&#xff1a;MongoDB定时异地备份所有数据库为加密压缩包-CSDN博客 1.可以直接下载本文件使用&#xff0c;将其放到mongo安装目录的bin目录下&#xff08;可手动执行&#xf…

【ARMv8/v9 GIC 系列 2.2 -- GIC SPI 中断的 GICD_ISACTIVER 和 GICD_ICACTIVER 配置】

文章目录 GIC 中断 Active 状态的配置中断状态分类GICD_ISACTIVER<n>GICD_ICACTIVER<n>参数 n 编号解释中断设置举例设置中断ID 68为活动状态清除中断ID 68的活动状态 小结 GIC 中断 Active 状态的配置 在ARMv8/ARMv9 体系结构中&#xff0c;GICD_ISACTIVER<n&…

学习新语言方法总结(二)

上一篇介绍了学习语言的数据类型、流程控制&#xff0c;leetcode上刷几道题目应该对基本代码逻辑有所了解了。这一篇主要来说一下进阶模块&#xff1a;面向对象 OOP思想是编程中重要的一个模块&#xff0c;在各个语言都有大量的广泛运用&#xff0c;废话不多说&#xff0c;直接…

2021数学建模C题目– 生产企业原材料的订购与运输

C 题——生产企业原材料的订购与运输 思路&#xff1a;该题主要是通过对供应商的供货能力和运送商的运货能力进行估计&#xff0c;给出合适的材料订购方案 程序获取 第一题问题思路与结果&#xff1a; 对 402 家供应商的供货特征进行量化分析&#xff0c;建立反映保障企业生…

POSIX标准接口概述

基本介绍 主要参考&#xff1a; Linux 系统中的 POSIX 接口详细介绍_linux posix-CSDN博客 POSIX&#xff08;Portable Operating System Interface&#xff0c;可移植操作系统接口&#xff09;是由 IEEE&#xff08;Institute of Electrical and Electronics Engineers&#x…

Java爬虫(一)

一、Java爬虫简介 1.1 Selenium Selenium爬虫是一种基于浏览器自动化的爬虫技术&#xff0c;可以模拟用户的操作行为&#xff0c;实现对动态网页的爬取。 1.2 jsoup Jsoup拥有十分方便的api来处理html文档&#xff0c;比如参考了DOM对象的文档遍历方法&#xff0c;参考了CSS选…

jeecg-boot项目的部署-windows系统

一、基础环境的准备&#xff1a; 1、后台基础环境&#xff1a;JDK、redis、数据库&#xff1a;sqlserver 2、前端基础环境&#xff1a;nginx redis和nginx的安装都很方便&#xff0c;直接去对应的官网&#xff0c;下载zip压缩包&#xff0c;然后解压&#xff0c;执行.exe文件…

一、docker简介及卸载、安装

目录 一、Docker 简介 二、dockers三要素 1、Docker镜像&#xff08;image&#xff09; 2、Docker仓库 3、Docker容器 三、docker架构图 四. Docker 运行的基本流程 五、docker 卸载 1、停止docker服务 2、查看yum安装的docker文件包 3、查看docker相关的rpm源文件 …