PDA

View Full Version : کد گرفتن دمای cpu



cpuram
یک شنبه 10 فروردین 1393, 23:48 عصر
سلام.
یه کد میخوام که دمای cpu رو بده کدهای داخل تالار رو امتحان کردم کار نمیکردن.
این نرم افزار میگه اپن سورس هست.
http://openhardwaremonitor.org
ولی متاسفانه نه من سورسش رو دیدم نه میتونم بفهمم چی به چی هست.

arian021
دوشنبه 11 فروردین 1393, 00:09 صبح
دوشت عزیز من تو اینترنت گشتم کد زیر رو پیدا کردم
باید یه Refrence به System.Management.Dll بدی
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;

}
}
}
}

cpuram
دوشنبه 11 فروردین 1393, 00:11 صبح
اینو تست کردم کار نمیکرد.
کدوم dll?

shahryari
دوشنبه 11 فروردین 1393, 08:49 صبح
اینو تست کردم کار نمیکرد.
کدوم dll?

بعضی سیستم ها دمای سی پی یو رو ساپورت نمیکنن..

cpuram
دوشنبه 11 فروردین 1393, 08:56 صبح
بعضی سیستم ها دمای سی پی یو رو ساپورت نمیکنن..
با لینکی که من بالا گذاشتم دمای cpu لپ تاپم رو داره با اون نرم افزار نشون میده.
کدی که دوستمون گذاشتن ارور میده.لطفا خودتون هم امتحانش کنید.

anotheruser
دوشنبه 11 فروردین 1393, 09:05 صبح
سلام ، به گفته اینجا (http://www.dreamincode.net/forums/topic/278594-finding-temperature-of-cpu/) خوندن دما از wmi کاری نا مطمئن هست و بسته به مادربرد،درایورهای نصب شده و.. ممکنه گه گاهی کار بکنه و گه گاهی هم نه ، اما Open Hardware Monitor (http://openhardwaremonitor.org/downloads/) یه نرم افزار مبتنی بر NET Framwork. هست که شما می تونین از کتابخانش برا خوندن دما استفاده کنین ، اگه فایل ZIP رو که تو صفحه مذکور هست دانلود کنین کنار فایل Exe چنتا DLL هست اما چون من الان VS رو سیستمم ندارم و حال اینم ندارم که با NotePad و CommandLine برنامه را تست بکنم ، شما خودتون زحمت بکشین ببینین کدومشوم به کارتون میاد ، به نظر میاد با افزودن OpenHardwareMonitorLib.dll بتونین به کلاسهای مورد نظر دسترسی پیدا بکنین ، و این کدهم تو همون انجمن به عنوان مثال آورده شده :


computerHardware = new Computer();
computerHardware.Open();
var temps = new List<decimal>();
foreach (var hardware in computerHardware.Hardware)
{
if (hardware.HardwareType != HardwareType.CPU)
continue;
hardware.Update();
foreach (var sensor in hardware.Sensors)
{
if (sensor.SensorType == SensorType.Temperature)
{
if (sensor.Value != null)
temps.Add((decimal)sensor.Value);
}
}
}
var maxTemp = temps.Count == 0 ? 0 : temps.Max();

cpuram
دوشنبه 11 فروردین 1393, 11:51 صبح
اونا خونده نمیشن سورسش اینجاست
http://code.google.com/p/open-hardware-monitor/source/browse/#svn%2Ftrunk%2FHardware%2FCPU
میشه یه نگاه بندازید؟

mosi-cowboy
جمعه 23 آبان 1393, 21:16 عصر
باید یه Refrence به System.Management.Dll بدی بعد این کد:


try
{
ManagementObjectSearcher f = new ManagementObjectSearcher("root\\WMI", "SELECT * FROM MSAcpi_ThermalZoneTemperature");
foreach (ManagementObject i in f.Get())
{
double te = double.Parse(i["CurrentTemperature"].ToString());
te -= 2732;
te /= 10.0;
MessageBox.Show(te.ToString());
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}


برای دمای Cpu دلیل اینکه Access Denied میده اینکه برنامه تحت ادمین اجرا نمیشه !!!!
شما کد ها رو بنویسید بعد Build بزنید .
بعد برید پوشه پروژتون Run as Administrator بزنید حتما نشون میده !!!!!!!!!!!!!