2011-12-26 41 views
0

我加入OpenHardwareMonitorLib.dll我不明白如何使用開放硬件監控器的源代碼

現在,我在我的代碼添加了引用:使用OpenHardwareMonitor.Hardware;

然後我做了最高級別的表單:Isensor Sensor;

但我不能「新的」它我不能創建它的一個實例,我得到空例外,它在構造函數中:

using System; 
using System.Collections.Generic; 
using System.ComponentModel; 
using System.Drawing; 
using System.IO; 
using System.Reflection; 
using System.Windows.Forms; 
using OpenHardwareMonitor.Hardware; 


namespace WindowsFormsApplication1 
{ 
    public partial class Form1 : Form 
    { 
     ISensor Sensor; 

     public Form1() 
     { 
      InitializeComponent(); 
      string t = Sensor.Name; 

     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 

     private void label1_Click(object sender, EventArgs e) 
     { 

     } 
    } 
} 

無法創建抽象類或接口的實例「OpenHardwareMonitor.Hardware

我試着OT看在code.google.com網站的源代碼:http://code.google.com/p/open-hardware-monitor/source/browse/#svn%2Ftags%2F0.3.2%2FWMI

,但我不想使用這些代碼。我下載了程序打開硬件監視器,除了exe文件之外,還有一個dll文件即時在我的項目中使用,我確定我可以使用dll更容易地使用它。我現在想要得到的是視頻卡GPU的溫度。

+1

我知道這是明顯的,但你確定你的代碼庫包含該接口的定義? – 2011-12-26 14:33:47

+0

鯊魚im不知道。但是Isensor存在。從邏輯上來說,從code.google網站下載/複製所有源代碼是不合邏輯的,爲什麼他們把openhwardwaremonitorlib.dll放在程序中?我不知道。 – 2011-12-26 14:45:48

+0

除了我的回答,你可能會看看http://stackoverflow.com/questions/2843244/how-to-read-gpu-graphic-card-temperature – Amy 2011-12-27 03:58:15

回答

1

首先,你不能接口new。你只能有new具體的課。其次,我建議將您的變量從Sensor更名爲sensor_sensor,或者沿着這些方向。有一個Sensor類。最好避免混淆。

我所做的是下載了DLL並在ILSpy中打開它。我們來看看實現這個接口的類。我強烈建議你下載ILSpy並自己嘗試一下。

下面是結果ILSpy window。現在在右下角我已經在界面上做了一個「分析」,看看它暴露的位置。似乎沒有任何工廠方法返回ISensor

回到左側,我們看到一個類實現ISensorSensor類。這個類有四個構造函數。這些將在Visual Studio中以intellisense形式出現,或者如果您導航到ILSpy中的Sensor類,則可以看到構造函數。

你最終需要做什麼是sensor = new Sensor(...);至於你使用了哪個構造函數......這取決於你。

+0

我在回答這個問題的目標不是給你一個魚,但教你如何釣魚。你知道這句諺語:「給一個人一條魚,你喂他一天,教一個人去釣魚,你一輩子喂他。」藉助工具帶上的ILSpy,您大概可以找出所需的一切。 – Amy 2011-12-27 01:54:36

+0

哦,並打開DLL和OpenHardwareMonitor.EXE文件。然後,如果您在界面上運行分析,您可以看到它在可執行文件中的使用位置。我從[這裏]獲得了可執行文件和DLL(http://openhardwaremonitor.org/downloads/)。你可以看到它的使用方式,從而使你能夠做到他們所做的一切! – Amy 2011-12-27 01:59:12

+0

Inuyasha我使用了ULSpy,並且對Sensor類進行了分析,我發現Sensor類來自OpenHardwareMonitor.Hardware.Sensor,但是當我添加OpenHardwareMonitorLib.dll作爲參考,然後使用OpenHardwareMonitor.Hardware時;在頂級類我不能看到傳感器我的意思是在構造函數之前的區域,我聲明變量我鍵入:傳感器和我看到Isensor,但我不能看到傳感器。我不明白班級Sensor應該顯示出來嗎?它的硬件的一部分沒有? – 2011-12-27 07:40:53