Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 8331353
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: June 9, 20262026-06-09T02:23:35+00:00 2026-06-09T02:23:35+00:00

Does anybody know where I can find any recent samples for using OpenHardwareMonitor.dll in

  • 0

Does anybody know where I can find any recent samples for using OpenHardwareMonitor.dll in C#.
I’ve tried a simple implementation but cannot get the cpu Temp. I know the library must have it since the app itself gets the temperature.

I have a feeling you have to register events to get readings on certain things but I’m finding it difficult to find a good example.

Computer myComputer = new Computer();

            myComputer.Open();

            foreach (var hardwareItem in myComputer.Hardware)
            {

                if (hardwareItem.HardwareType == HardwareType.CPU)
                {
                    foreach (var sensor in hardwareItem.Sensors)
                    {
                        if (sensor.SensorType == SensorType.Temperature)
                        {
                            Console.WriteLine(sensor.Value);
                        }
                    }
                }

            }

Any thoughts or insight would be appreciated.

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-06-09T02:23:37+00:00Added an answer on June 9, 2026 at 2:23 am

    Below is as far as I got. I don’t have more time to spend on it, so I’ll leave the rest of the sleuthing to you.

    I couldn’t find any documentation whatsoever. There are not even XML comments in the code, so I dug through the source code to get as far as I did. You’re going to have to do the same.

    The first thing you’re missing is that you have to set the Computer.CPUEnabled property to true before you call Computer.Open. This causes Open to add a CPU hardware device.

    The second thing you’re missing is that you have to call Computer.Open.

    The third thing you’re missing is that you have to call Hardware.Update to get it to re-poll the hardware.

    The fourth thing you’re missing is that the sensor value is a Nullable<float>. You have to check that there is a valid value there.

    This still isn’t enough. Although it now outputs four temperature sensors (on my machine), there never is a temperature value.

    I dug through the settings and found that there are these long initialization items for the cpu and cpu’s temperature. I added code to put those settings into the Computer (at least for one of the cores), but it didn’t have any effect.

    What is failing is this call in IntelCpu.Update

    Ring0.RdmsrTx(IA32_THERM_STATUS_MSR, out eax, out edx, 1UL << cpuid[i][0].Thread)
    

    That’s why I suspect there is some initialization missing.

    Good Luck!

    using System;
    using System.Collections.Generic;
    using System.Diagnostics;
    using System.Windows.Forms;
    using OpenHardwareMonitor.Hardware;
    
    namespace WindowsFormsApplication1
    {
        public class MySettings : ISettings
        {
            private IDictionary<string, string> settings = new Dictionary<string, string>();
    
            public MySettings(IDictionary<string, string> settings)
            {
                this.settings = settings;
            }
    
            public bool Contains(string name)
            {
                return settings.ContainsKey(name);
            }
    
            public string GetValue(string name, string value)
            {
                string result;
                if (settings.TryGetValue(name, out result))
                    return result;
                else
                    return value;
            }
    
            public void Remove(string name)
            {
                settings.Remove(name);
            }
    
            public void SetValue(string name, string value)
            {
                settings[name] = value;
            }
        }
    
        public class Form1 : Form
        {
            Computer myComputer;
            Timer timer = new Timer { Enabled = true, Interval = 1000 };
    
            public Form1()
            {
                timer.Tick += new EventHandler(timer_Tick);
    
                MySettings settings = new MySettings(new Dictionary<string, string>
                {
                    { "/intelcpu/0/temperature/0/values", "H4sIAAAAAAAEAOy9B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iu6//MH37x79i9/+NX6N3/TJm9/5f/01fw1+fosnv+A/+OlfS37/jZ/s/Lpv9fff6Ml/NTef/yZPnozc5679b+i193//TQZ+/w2Dd+P9/sZeX/67v/GTf/b3iP3u4/ObBL//73+i+f039+D8Zk/+xz/e/P6beu2TQZju8yH8f6OgzcvPv/U3/Rb8+z/0f/9b/+yfaOn8079X6fr6Cws7ln/iHzNwflPv99/wyS/+xY4+v/evcJ+733+jJ5//Cw7/4ndy9Im3+U2e/Fbnrk31C93vrt/fyPvdb+N//hsF7/4/AQAA//9NLZZ8WAIAAA==" },
                    { "/intelcpu/0/load/0/values", "H4sIAAAAAAAEAOy9B2AcSZYlJi9tynt/SvVK1+B0oQiAYBMk2JBAEOzBiM3mkuwdaUcjKasqgcplVmVdZhZAzO2dvPfee++999577733ujudTif33/8/XGZkAWz2zkrayZ4hgKrIHz9+fB8/Iu6//MH37x79i9++mpwcv/md/9df89egZ/xX/ym/5y/4D37618Lv7ya//u+58+u+5d9/z7/5t/w9/6u5fP5bH/6av+eTkXyefXxp26ONaf/v/dG/sf39D/rvnv4e5vc/0IP56/waK/vuHzf5I38P8/tv+mv8Rbb9f0pwTF9/zr/1X9vP/8I//+/6Pf7Z30N+/zdf/HX29zd/859q4aCNP5b//U+U3/+7f+zXOjZwfqvDX/V7/o9/vPz+a1G/pv0f+fGlhfk7eZ//N3/0v28//5X0u/n8Cxq7+f1X/tHft20A5x8a/W5/02+BP36Nf+j/nv8XfzrT+c2//Ob4p3+vktvUhNs/+xcWikP6e/4T/5jS5M8/sL8vP/5ff49f/Ivl9//sHzv6PX/vXyG//9R/94/9HuZ34P/5vyC//3W/5e/1exa/k+Bw4bUBnU2bP4Xg/1bn0uafeTH6PatfKL//N3/0t2y/gG9+/8+IzqYNxmU+/+jwX7afY67/nwAAAP//GYSA31gCAAA=" },
                });
    
                myComputer = new Computer(settings) { CPUEnabled = true };
                myComputer.Open();
            }
    
            void timer_Tick(object sender, EventArgs e)
            {
                Trace.WriteLine("");
                foreach (var hardwareItem in myComputer.Hardware)
                {
                    if (hardwareItem.HardwareType == HardwareType.CPU)
                    {
                        hardwareItem.Update();
                        foreach (IHardware subHardware in hardwareItem.SubHardware)
                            subHardware.Update();
    
                        foreach (var sensor in hardwareItem.Sensors)
                        {
                            if (sensor.SensorType == SensorType.Temperature)
                            {
                                Trace.WriteLine(String.Format("{0} Temperature = {1}", sensor.Name, sensor.Value.HasValue ? sensor.Value.Value.ToString() : "no value"));
                            }
                        }
                    }
                }
            }
        }
    }
    
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Can't find any prebuilt binaries for Windows. Does anybody know a place where I
Does anybody know where I can find a utility/application running on Windows that analyses
Does anybody know of a free flash obfuscator(protector)? All I can find are commercial
Does anybody know how I can theme the ctools modal window? I've tried putting
Does anybody know of any examples using AudioQueue that play from an in-memory source?
Does anybody know how I can programmatically check (using C#) whether my program will
Does anybody know how I can find the closest element that is for example
does anybody know we can translate from real image captured using cameras be converted
Does anybody know where I can find documentation on how to write annotation schemas
Does anybody know if it's there any way one can change the mode of

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.