PDA

View Full Version : حرفه ای: گرفتن دمای CPU



MohammadHadi2031
جمعه 04 مرداد 1392, 15:48 عصر
سلام
من با استفاده از این کد تونستم دمای CPU را بدست بیارم آیا این کد درست است زیرا دمایی که نشان می دهد از 48 درجه پایین تر نمی آید


ManagementObjectSearcher searcher =
new ManagementObjectSearcher("root\\WMI",
"SELECT * FROM MSAcpi_ThermalZoneTemperature");

ManagementObjectCollection.ManagementObjectEnumera tor enumerator =
searcher.Get().GetEnumerator();

while (enumerator.MoveNext())
{
ManagementBaseObject tempObject = enumerator.Current;
// Console.WriteLine(tempObject["CurrentTemperature"].ToString());
double temp = double.Parse(tempObject["CurrentTemperature"].ToString());
listBox1.Items.Add(temp);
temp = (temp / 10) - 273.15;
listBox1.Items.Add(temp);

godofphp
جمعه 04 مرداد 1392, 16:06 عصر
از این کلاس استفاده کن راحتتری


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;

namespace RCoding.Common.Diagnostics.SystemInfo
{
public class Temperature
{
public double CurrentValue { get; set; }
public string InstanceName { get; set; }
public static List<Temperature> Temperatures
{
get
{
List<Temperature> result = new List<Temperature>();
ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature");
foreach (ManagementObject obj in searcher.Get())
{
Double temp = Convert.ToDouble(obj["CurrentTemperature"].ToString());
temp = (temp - 2732) / 10.0;
result.Add(new Temperature { CurrentValue = temp, InstanceName = obj["InstanceName"].ToString() });
}
return result;

}
}
}
}

MohammadHadi2031
جمعه 04 مرداد 1392, 16:16 عصر
ممنون از راهنماییتان

MehdiElexal
چهارشنبه 16 بهمن 1392, 18:16 عصر
آقا این چه using استفاده میکنه ؟ ممنون

alexmcse
چهارشنبه 16 بهمن 1392, 19:15 عصر
آقا این چه using استفاده میکنه ؟ ممنون

در پنجره سولوشن اکسپلورر بر روی گزینه رفرنس راست کلیک کن و به دنبال یوزینگ زیر بگرد آن را انتخاب کن

using System.Management

alexmcse
چهارشنبه 16 بهمن 1392, 19:29 عصر
از این کلاس استفاده کن راحتتری


using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;

namespace RCoding.Common.Diagnostics.SystemInfo
{
public class Temperature
{
public double CurrentValue { get; set; }
public string InstanceName { get; set; }
public static List<Temperature> Temperatures
{
get
{
List<Temperature> result = new List<Temperature>();
ManagementObjectSearcher searcher = new ManagementObjectSearcher(@"root\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature");
foreach (ManagementObject obj in searcher.Get())
{
Double temp = Convert.ToDouble(obj["CurrentTemperature"].ToString());
temp = (temp - 2732) / 10.0;
result.Add(new Temperature { CurrentValue = temp, InstanceName = obj["InstanceName"].ToString() });
}
return result;

}
}
}
}


سلام
این کد را اجرا میکنم ولی ارور میدهد دلیل چی میتواند باشد

لطفا به عکس زیر نگاه کنید
http://s5.picofile.com/file/8112097826/Untitled.png