セージ の メモ書き

メモこそ命の恩人だ

C# - OpenHardwareMonitor

OpenHardwareMonitor

https://openhardwaremonitor.org/downloads/ https://github.com/openhardwaremonitor/openhardwaremonitor

  • ハードウェアの状態を取得できる。
    • 機器:CPU、GPU、メモリ、HDD 等
    • 状態:温度、電圧、ファン回転数 等
  • GUIのあるフリーソフトも公開されてる。
  • NuGet からライブラリを取得して、APIを使用することも可。
  • NuGet よりダウンロード
    • OpenHardwareMonitor
    • バージョン:0.9.6
    • 作成者:Kent Chenery
    • ダウンロード数:43.2K (2022/4時点)
    • ライセンス:MPL-2.0
  • 以下の using が必要
    • using OpenHardwareMonitor.Hardware;

扱えるハードウェア情報がコレ。

public enum HardwareType
{
    Mainboard = 0,
    SuperIO = 1,
    CPU = 2,
    RAM = 3,
    GpuNvidia = 4,
    GpuAti = 5,
    TBalancer = 6,
    Heatmaster = 7,
    HDD = 8
}

扱えるセンサー情報がコレ。

public enum SensorType
{
    Voltage = 0,
    Clock = 1,
    Temperature = 2,
    Load = 3,
    Fan = 4,
    Flow = 5,
    Control = 6,
    Level = 7,
    Factor = 8,
    Power = 9,
    Data = 10,
    SmallData = 11,
    Throughput = 12
}

こんな感じ。

public void CheckHardware()
{
    // true にした情報を取得できる
    // true が多いほど、Open に時間がかかる。すべて true にしても、自分のPCで2~3秒ほど。
    var computer = new Computer
    {
        CPUEnabled = true,
        FanControllerEnabled = true,
        GPUEnabled = true,
        HDDEnabled = true,
        MainboardEnabled = true,
        RAMEnabled = true,
    };
    computer.Open();

    // Hardware プロパティで各機器の情報を参照できる
    foreach (var hardware in computer.Hardware)
    {
        // 状態更新
        hardware.Update();

        Debug.WriteLine($"===== Hardware:{hardware.HardwareType}, Name:{hardware.Name} =====");

        // Sensors プロパティでセンサー情報を参照できる
        foreach (var sensor in hardware.Sensors)
        {
            if (!sensor.Value.HasValue) continue;
            Debug.WriteLine(
                $"Sensor:{sensor.SensorType}, " +
                $"Name:{sensor.Name}," +
                $"Value:{sensor.Value}," +
                $"Min/Max:{sensor.Min}~{sensor.Max}");
        }
        Debug.WriteLine($"");
    }

    computer.Close();
}

自分のPCで実行すると、以下の結果が取得できた。
Github を参照すると、IntelCPUなど、様々な機器に対応してくれてる様子。
センサーの "Load" は負荷(使用率)を表してる。

===== Hardware:Mainboard, Name:HP 8101 =====

===== Hardware:CPU, Name:Intel Core i7-6500U =====
Sensor:Load, Name:CPU Core #1,Value:35.43759,Min/Max:35.43759~77.77778
Sensor:Load, Name:CPU Core #2,Value:40.2439,Min/Max:40.2439~55.55556
Sensor:Load, Name:CPU Total,Value:37.84074,Min/Max:37.84074~66.66666
Sensor:Temperature, Name:CPU Core #1,Value:49,Min/Max:49~58
Sensor:Temperature, Name:CPU Core #2,Value:48,Min/Max:48~55
Sensor:Temperature, Name:CPU Package,Value:49,Min/Max:49~57
Sensor:Clock, Name:CPU Core #1,Value:797.6027,Min/Max:797.6027~897.303
Sensor:Clock, Name:CPU Core #2,Value:1196.404,Min/Max:797.6027~1196.404
Sensor:Power, Name:CPU Package,Value:7.315824,Min/Max:7.315824~8.358537
Sensor:Power, Name:CPU Cores,Value:5.026537,Min/Max:5.026537~5.904718
Sensor:Power, Name:CPU Graphics,Value:0.128678,Min/Max:0.04882073~0.128678
Sensor:Power, Name:CPU DRAM,Value:2.177535,Min/Max:1.973752~2.177535
Sensor:Clock, Name:Bus Speed,Value:99.70033,Min/Max:99.70033~99.70033

===== Hardware:RAM, Name:Generic Memory =====
Sensor:Load, Name:Memory,Value:50.31203,Min/Max:50.31203~50.31203
Sensor:Data, Name:Used Memory,Value:7.999119,Min/Max:7.999119~7.999119
Sensor:Data, Name:Available Memory,Value:7.899899,Min/Max:7.899899~7.899899

===== Hardware:HDD, Name:SanDisk SD8SN8U-256G-1006 =====
Sensor:Temperature, Name:Temperature,Value:27,Min/Max:27~27
Sensor:Load, Name:Used Space,Value:90.53702,Min/Max:90.53702~90.53702



以上