mirror of
https://github.com/zhongyang219/TrafficMonitor.git
synced 2026-10-18 22:01:29 +08:00
92 lines
3.2 KiB
C++
92 lines
3.2 KiB
C++
// OpenHardwareMonitorApi.h
|
|
|
|
#pragma once
|
|
#include <string>
|
|
#include "OpenHardwareMonitor/OpenHardwareMonitorApi.h"
|
|
#include "UpdateVisitor.h"
|
|
#include <map>
|
|
|
|
using namespace System;
|
|
using namespace LibreHardwareMonitor::Hardware;
|
|
|
|
namespace OpenHardwareMonitorApi {
|
|
|
|
public class COpenHardwareMonitor : public IOpenHardwareMonitor
|
|
{
|
|
public:
|
|
COpenHardwareMonitor();
|
|
virtual ~COpenHardwareMonitor();
|
|
|
|
virtual void GetHardwareInfo() override;
|
|
virtual float CpuTemperature() override;
|
|
virtual float GpuTemperature() override;
|
|
virtual float HDDTemperature() override;
|
|
virtual float MainboardTemperature() override;
|
|
virtual float GpuUsage() override;
|
|
virtual float CpuFreq() override;
|
|
virtual float CpuUsage() override;
|
|
virtual const std::map<std::wstring, float>& AllHDDTemperature() override;
|
|
virtual const std::map<std::wstring, float>& AllCpuTemperature() override;
|
|
virtual const std::map<std::wstring, float>& AllHDDUsage() override;
|
|
|
|
virtual void SetCpuEnable(bool enable) override;
|
|
virtual void SetGpuEnable(bool enable) override;
|
|
virtual void SetHddEnable(bool enable) override;
|
|
virtual void SetMainboardEnable(bool enable) override;
|
|
|
|
private:
|
|
bool GetHardwareTemperature(IHardware^ hardware, float& temperature);
|
|
bool GetCpuTemperature(IHardware^ hardware, float& temperature);
|
|
bool GetGpuUsage(IHardware^ hardware, float& gpu_usage);
|
|
bool GetHddUsage(IHardware^ hardware, float& hdd_usage);
|
|
bool GetCPUFreq(IHardware^ hardware, float& freq);
|
|
bool GetCpuUsage(IHardware^ hardware, float& cpu_usage);
|
|
void ResetAllValues();
|
|
//向map中插入一个数值,如果key已经存在,则自动对新插入的key重命名
|
|
static void InsertValueToMap(std::map<std::wstring, float>& value_map, const std::wstring& key, float value);
|
|
|
|
private:
|
|
float m_cpu_temperature{};
|
|
float m_gpu_nvidia_temperature{};
|
|
float m_gpu_ati_temperature{};
|
|
float m_gpu_intel_temperature{};
|
|
float m_hdd_temperature{};
|
|
float m_main_board_temperature{};
|
|
float m_gpu_nvidia_usage{};
|
|
float m_gpu_ati_usage{};
|
|
float m_gpu_intel_usage{};
|
|
float m_cpu_freq{};
|
|
float m_cpu_usage{};
|
|
std::map<std::wstring, float> m_all_hdd_temperature;
|
|
std::map<std::wstring, float> m_all_cpu_temperature;
|
|
std::map<std::wstring, float> m_all_cpu_clock;
|
|
std::map<std::wstring, float> m_all_hdd_usage;
|
|
};
|
|
|
|
//一个单实例类
|
|
//由于COpenHardwareMonitor是非托管类,不能将托管类的对象作为成员变量,此类用于保存托管类的对象
|
|
public ref class MonitorGlobal
|
|
{
|
|
public:
|
|
MonitorGlobal();
|
|
~MonitorGlobal();
|
|
static MonitorGlobal^ Instance()
|
|
{
|
|
if (m_instance == nullptr)
|
|
{
|
|
m_instance = gcnew MonitorGlobal();
|
|
}
|
|
return m_instance;
|
|
}
|
|
|
|
void Init();
|
|
void UnInit();
|
|
|
|
Computer^ computer;
|
|
UpdateVisitor^ updateVisitor{};
|
|
|
|
private:
|
|
static MonitorGlobal^ m_instance{};
|
|
};
|
|
}
|