Laden...

CPU Speed & CPU Temperatur herausfinden?

Erstellt von LordK vor 19 Jahren Letzter Beitrag vor 15 Jahren 6.901 Views
LordK Themenstarter:in
95 Beiträge seit 2005
vor 19 Jahren
CPU Speed & CPU Temperatur herausfinden?

Hi Leute,

ich würde gerne in einem Programm die CPU Temperatur und die aktuelle CPU Geschwindigkeit ausgeben (Centrino Notebook). Leider weiß ich nicht so recht wie.

Kann mir jemand mal ein Tip geben?

Danke & Gruß

LordK

Programmieren in C# hält die grauen Zellen am Leben.
Es schärft alle fünf Sinne: den Schwachsinn, den Blödsinn, den Wahnsinn, den Unsinn und den Stumpfsinn.

D
279 Beiträge seit 2004
vor 19 Jahren

Hallo,

die CPU-Geschwindigkeit kannst du folgendermaßen über WMI ermitteln:


public static uint GetProcessorSpeed()
{
	// Win32_Processor-Instanz für den ersten Prozessor erzeugen und die
	// Geschwindigkeit abfragen
	ManagementObject mo = new ManagementObject(
		"Win32_Processor.DeviceID='CPU0'");
			
	uint currentClockSpeed = 0;
	try
	{
		currentClockSpeed = (uint)(mo["CurrentClockSpeed"]);
	}
	catch {}
	// Speicher des WMI-Objekts freigeben
	mo.Dispose();
	return currentClockSpeed;
}

Die CPU-Temperatur kann man glaube ich auch über WMI ermitteln, soweit ich mich erinnere muss dies dein Mainboard-Treiber aber explizit unterstützen.
Dann sollte es folgenermaßen funktionieren: (nicht getestet)


public static void CPUTemp()
{

	SelectQuery myQuery = new SelectQuery("SELECT * from " +
		"Win32_TemperatureProbe");
	ManagementObjectSearcher mySearcher = new ManagementObjectSearcher(myQuery);
			
	foreach (ManagementBaseObject obj in mySearcher.Get())
	{

		MessageBox.Show(("Temp: " + obj["CurrentReading"]));

	} 
	mySearcher.Dispose();
}

Nicht vergessen vorher System.Management zu referenzieren und einzubinden.

LordK Themenstarter:in
95 Beiträge seit 2005
vor 19 Jahren

Hey super.

Vielen Dank 👍

Das mit dem CPU Speed funzt einwandfrei 🙂

Das mit der Temperatur leider nicht 🙁
Aber ich weiß, dass es auf jeden Fall geht, da ich
ein Programm hab, was ebenfalls die Temperatur ausließt,
ich weiß leider nur nicht wie, und der Autor des Programms
hat mir noch nicht geantwortet.

Wenn dafür jemand nochmal ein Tip hätte? 🙂

Aber soweit schon mal ganz vielen Dank 🙂)

Gruß

LordK

Programmieren in C# hält die grauen Zellen am Leben.
Es schärft alle fünf Sinne: den Schwachsinn, den Blödsinn, den Wahnsinn, den Unsinn und den Stumpfsinn.

K
355 Beiträge seit 2004
vor 19 Jahren

Das mit der Temperatur auslesen hab ich auch mal mit der WMI versucht (so wie das auslesen der div. Lüfter). Naja iss nix geworden, da ich das aus der WMI nich rausbekommen hab. Wär ja fast zu einfach 😁

LordK Themenstarter:in
95 Beiträge seit 2005
vor 19 Jahren

Original von KRambo
Das mit der Temperatur auslesen hab ich auch mal mit der WMI versucht (so wie das auslesen der div. Lüfter). Naja iss nix geworden, da ich das aus der WMI nich rausbekommen hab. Wär ja fast zu einfach 😄

Jo, die Lüftergeschwindigkeiten wären natürlich noch zu schön... 😉

Ist halt für mein Notebook.
Und es gibt ein Tool was die Temp. hoch setzt, bei der der Lüfter anspringt.
Soweit will ich ja gar nicht kommen, es langt mir schon die Temp auszulesen.

Programmieren in C# hält die grauen Zellen am Leben.
Es schärft alle fünf Sinne: den Schwachsinn, den Blödsinn, den Wahnsinn, den Unsinn und den Stumpfsinn.

K
355 Beiträge seit 2004
vor 19 Jahren

Naja auf Notebooks werden kaum oder gar keine Mainboards mit Temperaturfühler verbaut, d.h. ich denke nicht, dass man da die Temperatur auslesen kann. Kenne mal kein Notebook, wo dies funktioniert.

Habe aber auf meinem "normalen" Rechner schon probiert, andere Tools kriegen die Temps und die Lüfter raus, nur weiss ich momentan noch nicht wie. Bei Desktops gehts normal (ausser wenn sie nur billige Hardware drin haben)...

LordK Themenstarter:in
95 Beiträge seit 2005
vor 19 Jahren

Also das Tool hier kann das bei meinem Notebook 😉

http://www.pbus-167.com/sam_p35c.htm

Wie gesagt, ich hab den Author des Programms ja schon gefragt, wie er die CPU Temperatur abgreift, aber er hat noch nicht geantwortet.

Das Tool funzt soweit auch einwandfrei. Nur ich würde gerne die CPU Temp anzeige hat noch in mein Programm verbauen.

Gruß

LordK

Programmieren in C# hält die grauen Zellen am Leben.
Es schärft alle fünf Sinne: den Schwachsinn, den Blödsinn, den Wahnsinn, den Unsinn und den Stumpfsinn.

M
456 Beiträge seit 2004
vor 19 Jahren

@LordK:

Da das Programm auf dem .NET Framework basiert, könntest du die Exe mal durch den Reflecor jagen (siehe Download Datenbank).
Damit sollte es recht einfach sein, heraus zu bekommen wie das Auslesen der Temperatur funktioniert 8)

I am Jack's smirking revenge.
I am Jack's raging bile duct.
I am Jack's cold sweat.
I am Jack's complete lack of surprise.
I am Jack's broken heart.
I am Jack's wasted life.

LordK Themenstarter:in
95 Beiträge seit 2005
vor 19 Jahren

Original von maxE
@LordK:

Da das Programm auf dem .NET Framework basiert, könntest du die Exe mal durch den Reflecor jagen (siehe Download Datenbank).
Damit sollte es recht einfach sein, heraus zu bekommen wie das Auslesen der Temperatur funktioniert 8)

Geht leider nicht, da wurde wohl ein Obfuscator benutzt...

Programmieren in C# hält die grauen Zellen am Leben.
Es schärft alle fünf Sinne: den Schwachsinn, den Blödsinn, den Wahnsinn, den Unsinn und den Stumpfsinn.

H
704 Beiträge seit 2003
vor 19 Jahren

So wie ich das sehe liest der das eher über seinen Treiber crackNT direkt von der Hardware

SpeedFan and Samsung P35 Control use the same BUS to read temperature values

dh der hat sich die Systemspezifikation von Samsung hergenommen und hat einen Windows Treiber programmiert.
Sowas geht mit C# nicht, da musst du auf C++ zurückgreifen ...

[last.fm](http://www.last.fm/user/hauptmanAlpha/)
LordK Themenstarter:in
95 Beiträge seit 2005
vor 19 Jahren

Original von hauptmann
dh der hat sich die Systemspezifikation von Samsung hergenommen und hat einen Windows Treiber programmiert.
Sowas geht mit C# nicht, da musst du auf C++ zurückgreifen ...

Hm, irgendwie muss es ja gehen. Das Programm ist ja auch in C# geschrieben.
Und CrackNT umgeht ja nur den User-Mode, um über den Kernel Mode direkt auf die Hardware zu kommen. Man kann den Temperatursensor irgendwie über den SMB abgreifen. Nur leider weiß ich da auch noch net so ganz wie...

speedfan funktioniert auch, arbeitet allerdings ohne diese CrackNT.dll

Gruß

LordK

Programmieren in C# hält die grauen Zellen am Leben.
Es schärft alle fünf Sinne: den Schwachsinn, den Blödsinn, den Wahnsinn, den Unsinn und den Stumpfsinn.

49 Beiträge seit 2005
vor 19 Jahren

hi

mal ne "newbe" frage: wie verarbeitet ihr den rückgabewert weiter?
ich kann den nicht in string uwandeln!?

könnt ihr mir evtl. weiterhelfen?

thx

Das Leben ist ein scheiß Spiel, aber die Grafik ist gut.

LordK Themenstarter:in
95 Beiträge seit 2005
vor 19 Jahren

Original von tomuc83
hi

mal ne "newbe" frage: wie verarbeitet ihr den rückgabewert weiter?
ich kann den nicht in string uwandeln!?

könnt ihr mir evtl. weiterhelfen?

thx

Ich nehme mal an, du meinst den Rückgabewert, um den CPU Speed raus zu bekommen.

du rufst die Funktion ja folgendermaßen auf:


uint cpuSpeed = GetProcessorSpeed();


Dann kannst du das ganz einfach mit


uint cpuSpeed = GetProcessorSpeed();
string cpuSpeedString = cpuSpeed.toString();

in einen String umwandeln.

Hoffe das wars, was du meinst, am sonsten einfach nochmal fragen.

Gruß

LordK

Programmieren in C# hält die grauen Zellen am Leben.
Es schärft alle fünf Sinne: den Schwachsinn, den Blödsinn, den Wahnsinn, den Unsinn und den Stumpfsinn.

49 Beiträge seit 2005
vor 19 Jahren

hi LordK

danke für die Msg. Ja genau das war was ich gesucht hatte. Funzt auch.
Kann man den uint wert nicht gleich in nen string umwandeln? ich bekomm da ne exception

Das Leben ist ein scheiß Spiel, aber die Grafik ist gut.

K
355 Beiträge seit 2004
vor 19 Jahren

Vielleicht so:


string cpuSpeed = Convert.ToString(GetProcessorSpeed());

49 Beiträge seit 2005
vor 19 Jahren

ne der Fehler is: MainForm blabla "denotes a field where a class was expected" CS0118

Das Leben ist ein scheiß Spiel, aber die Grafik ist gut.

LordK Themenstarter:in
95 Beiträge seit 2005
vor 19 Jahren

mir würde da noch die vielleicht etwas umständliche Methode einfallen, den
uint vorher in einen int zu casten.

Programmieren in C# hält die grauen Zellen am Leben.
Es schärft alle fünf Sinne: den Schwachsinn, den Blödsinn, den Wahnsinn, den Unsinn und den Stumpfsinn.

S
238 Beiträge seit 2004
vor 18 Jahren

Gibt es jetzt über die WMI eine Möglichkeit, auf die aktuelle Prozessortemperatur zuzugreifen oder wie?

Ich meine, in der MSDN hab ich zumindest keinen Eintrag finden können...
Gesucht habe ich unter Win32_Processor.

Greets - SK

Sagte ich schon Danke? Nein? ...kommt noch...

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Schattenkanzler,

zumindest steht weiter oben (ungetesteter) WMI-Code dafür.

herbivoe

S
238 Beiträge seit 2004
vor 18 Jahren

Hmm, der obige Code liefert bei mir einen Fehler zurück (Object reference not set to an instance of an object). Dadurch kann ich die aktuelle Temperatur nicht auslesen.
Ebenso bekomme ich diesen Fehler, wenn ich anstatt "CurrentReading" "NominalReading" benutze.

Welche Voraussetzungen sind notwendig, damit das anständig funktioniert?

Greets - SK

Sagte ich schon Danke? Nein? ...kommt noch...

49.485 Beiträge seit 2005
vor 18 Jahren

Hallo Schattenkanzler,

bei einer NullReferenceException solltest du anhand des Stacktrackes der Exception oder mit Hilfe des Debuggers leicht herausfinden können, welche Variable null ist.

herbivore

S
238 Beiträge seit 2004
vor 18 Jahren

Ich würde mal behaupten wollen, dass die Maschine, auf der ich den Code getestet habe, einfach keinen Temperatursensor hat bzw. die Daten nicht so einfach preisgibt. Stand davon nicht auch was im Beitrag ziemlich weit am Anfang? Ich meine, dass das System die Abfrage auch irgendwie unterstützen muss?

Greets - SK

Sagte ich schon Danke? Nein? ...kommt noch...

2.921 Beiträge seit 2005
vor 15 Jahren

Zum Auslesen der Temperatur s. auch:

CPU Temperatur auslesen mit WMI

Seit der Erkenntnis, dass der Mensch eine Nachricht ist, erweist sich seine körperliche Existenzform als überflüssig.