Seite 1 von 1

Hardware (Temperatur) Daten auslesen

Verfasst: So Mär 24, 2013 4:01 pm
von cantius
Hallo Freunde des Programmierens,

ich komm gleich zur Sache. Ich möchte gerne die CPU/GPU Temperatur und ein paar Informationen über den Prozessor, Arbeitsspeicher und Grafikkarte auslesen.
Ich habe schon etliche Tage danach im Internet gesucht, allerdings hat mir das jetzt nicht wirklich weiter geholfen.

Also entweder man liest die Temperatur mit einer Windows Klasse (Win32_temperatureprobe) aus. Was ich bisscher nur in der Konsole versucht habe, die Ausgabe darauf war das "keine Instanzen verfügbar" sind. Deswegen behaupte ich einfach mal, das mein Mainboard dies einfach nicht unterstützt. :roll: (Andere Befehle laufen nämlich)

Nach weiterem Suchen habe ich einen Treiber namens "winring0.dll" gefunden. Dieser Treiber sollte die Temperatur auslesen. Meine Frage ist jetzt nur, wie komme ich an die Funktionen der Datei bzw. wie spreche ich diese Datei an. Zusätzlich habe ich noch ein Programm "Open Hardware Monitor" gefunden. Dieses Programm bietet auch eine .dll an. Diese Bibliothek liest noch die Temperaturen der Festplatten aus und vieles mehr. Was vielleicht sogar noch besser ist ;)

Meine Frage ist eigentlich wie lese ich diese .dll aus ? Ich habe zwar Einblick in den Code bzw. die Dateien von Open Hardware Monitor, allerdings blick ich da nicht ganz durch. http://open-hardware-monitor.googlecode.com/svn/

Wäre nett wenn mir einer helfen könnte oder möglicherweise eine andere Möglichkeiten kennt an die Daten zu kommen. Ansonsten schönen Sonntag noch

Re: Hardware (Temperatur) Daten auslesen

Verfasst: So Mär 24, 2013 4:58 pm
von cloidnerux
Hi und Willkommen im Forum.
Meine Frage ist jetzt nur, wie komme ich an die Funktionen der Datei bzw. wie spreche ich diese Datei an.
Eine .dll ist eine Objektdatei, die zur Laufzeit geladen wird. Du deklarierst in deinem Programm die entsprechenden Funktionsprototypen und lädst die Funktionsdeklarationen zur Laufzeit aus der .dll

Ganz generell stellt sich die Frage, in welche Programmiersprache du arbeiten willst. Der Open Hardware Monitor ist in C# geschrieben und sollte daher auch von irgendwas .NET kompatiblen angesprochen werden.
Wenn du in C++ bleiben willst, solltest du dich mal umschauen, was die Windows-Systemschnittstelle hergibt.
Generell ist das kein leichtes Thema und sollte daher auch nicht leichtfertig angegangen werden.

MfG cloidnerux.

Re: Hardware (Temperatur) Daten auslesen

Verfasst: So Mär 24, 2013 5:27 pm
von Xin
cantius hat geschrieben:Wäre nett wenn mir einer helfen könnte oder möglicherweise eine andere Möglichkeiten kennt an die Daten zu kommen. Ansonsten schönen Sonntag noch
Ich bin der Meinung das vor 5 Jahren mal programmiert zu haben - zugegebenermaßen hat mich das nicht genug interessiert, als dass ich mir gemerkt hätte, wie ich das programmiert habe. ^^
Auf die Schnelle finde ich aber nur Assemblerroutinen, WMI mit dem von Dir genannten Win32_temperatureprobe.

Vielleicht postest Du Dein Programm einfach mal und wir gucken, ob es anderswo funktioniert oder ob man es ans Laufen bekommt.

Re: Hardware (Temperatur) Daten auslesen

Verfasst: So Mär 24, 2013 5:41 pm
von cantius
Danke erstmal für deine Antwort :)

Ich wollte eigentlich in C++ bleiben, weil ich mich da schon eingearbeitet habe. Habe aber bei meiner ständigen Suche festellen müssen, dass das meiste in C# geschrieben wurde :? Also wenn du sagst, dass es in C# wesentlich einfacher umzusetzen wäre dann bin ich am überlegen noch zu wechseln.

Man kann ja nicht direkt die Prozessorsensoren/Motherboardsensoren oder den Smbus ansprechen. Dafür braucht man ja ein Treiber, wenn ich das richtig verstanden habe. Was jetzt in meinem Fall die winring0.dll oder openhardwaremonitor.dll wäre, die darauf zugreift.

Ich dachte man kann einfach die .dll einbinden und die Werte so auslesen. :| Naja, ich werde mich erstmal weiter im Internet umgucken und vielleicht hat der eine oder andere User hier noch eine gute Idee.

Re: Hardware (Temperatur) Daten auslesen

Verfasst: So Mär 24, 2013 6:17 pm
von cantius
Xin hat geschrieben:Vielleicht postest Du Dein Programm einfach mal und wir gucken, ob es anderswo funktioniert oder ob man es ans Laufen bekommt.

Ich hatte die Klasse "Win32_temperatureprobe" bisher in der Konsole bzw. Powershell ausgeführt.
In der Konsole sagt er "Keine Instanzen verfügbar" und in der Powershell gibt er gar nichts aus. Hatte das auch bei anderen PC's ausgeführt, gab das selbe Erbgenis :? Hab dann wieder im Internet nachgeschaut und da hieß es das viele Mainboardhersteller diese Klasse nicht mehr "unterstützen", weil die WMI Informationen basieren wohl auf dem SMBios und das ist ganz selten das dort Temperaturen aus zulesen sind.

Es gibt aber einige Programme die benutzen ebenfalls die winring0.dll und daher denke ich, dass das möglicherweise am schlausten ist.