2014-12-04 102 views
2

我正在嘗試使用OpenHardwareMonitorLib DLL來獲取我的CPU \ cores的溫度,但是這並沒有爲我返回溫度。使用開放式硬件監控器獲取CPU溫度

我環顧四周,看到這是一個幾乎無處不在的問題,但我無法得到它的工作。

如果有人能告訴我我在哪裏出錯,我會非常感激。

這是我的代碼:

using System; 
using System.Linq; 
using System.Management; 
using OpenHardwareMonitor.Collections; 
using OpenHardwareMonitor.Hardware; 
using OxyPlot; 
using OxyPlot.Series; 


namespace cs_TempReader 
{ 
    class Program 
    { 
     private DateTime now; 
     protected readonly ListSet<ISensor> active = new ListSet<ISensor>(); 
     public event SensorEventHandler SensorAdded; 
     public event SensorEventHandler SensorRemoved; 

     protected virtual void ActivateSensor(ISensor sensor) 
     { 
      if (active.Add(sensor)) 
       if (SensorAdded != null) 
        SensorAdded(sensor); 
     } 

     private static void Main(string[] args) 
     { 
      var myComputer = new Computer(); 

      myComputer.CPUEnabled = true; 
      myComputer.ToCode(); 
      myComputer.Open(); 

      foreach (var hardwareItem in myComputer.Hardware) 
      { 
       hardwareItem.Update(); 
       hardwareItem.GetReport(); 

       Console.WriteLine(hardwareItem.GetReport()); 

       var series = new LineSeries(); 

       foreach (var sensor in hardwareItem.Sensors) 
       { 
        if (sensor.SensorType == SensorType.Temperature) 
        { 
         Console.WriteLine("{0} {1} {2} = {3}", sensor.Name, sensor.Hardware, sensor.SensorType, sensor.Value); 

        } 

       } 
      } 
     } 
    } 
} 

我的最終目標是能夠綁定到一個更大的應用程序這一點。

+1

OHM應用程序能正常工作嗎? – leppie 2014-12-04 14:35:32

+0

通過一些其他OpenHardwareMonitor標記的問題,我碰到[最近OpenHardwareMonitor示例代碼C#](http://stackoverflow.com/questions/11765192/recent-openhardwaremonitor-sample-code-c-sharp?rq=1)其中一個答案表明,由於API調用的性質,您需要以管理員權限運行VS。 – AWinkle 2014-12-04 14:47:11

+0

@Simon:編輯器是正確的,可以從問題中刪除您的簽名,因爲您的用戶名自動顯示在SO本身問題的右下角。 – 2014-12-04 14:48:17

回答

2

您需要在應用程序中請求更高的執行級別,以便此代碼可以正常工作。

要做到這一點,你必須:

  • 右鍵單擊該項目;
  • 點擊添加
  • 點擊新項...
  • 類型清單的搜索欄上
  • 點擊確定

之後,你必須在清單上更改此行:

<requestedExecutionLevel level="asInvoker" uiAccess="false" /> 

要這樣:

<requestedExecutionLevel level="highestAvailable" uiAccess="false" /> 
0

可能是你必須迫使你的應用程序以管理員身份運行,那麼你的代碼可能會工作。

右鍵單擊Project> Add New Item,選擇「Application Manifest File」。

更改

<requestedExecutionLevel> 

元素:

<requestedExecutionLevel level="requireAdministrator" uiAccess="false" /> 

這裏的教程,你可以去看看。

http://www.lattepanda.com/topic-f11t3004.html