[VC++.NET] Systeminformationen auslesen?

the incredible Leitman

Erfahrenes Mitglied
Hallo werte user :D

Ich habe mal so ne Frage...

Ist denn mit VC++ eigentlich möglich, gewisse Informationen vom System auszulesen?
Interressant für mir wären da zum Beispiel
die CPU Auslastung, Memory usage, Temperatur von CPU, Graka..., und sowas in der Art.

Verwende Microsoft WinXP

Des weiteren... habe schon Code gesehen, der einen Screenshot in VB macht.... leider kann ich kein VB lesen -.- *schäm*
Wie würde soetwas in C++ (oder auch C#) aussehen?
Ist das denn auch möglich?

Hoffe, jemand kann mir helfen,
ich plane nämlich ein Programm, mit dem ich meine einzelnen Rechner überwachen kann... Denn bei mir im Netzwerk stürzen einige Rechner zeitweise ab, wenn ich nicht auf sie achte, würde gerne wissen, woran das liegt,
kann ja nicht sein, dass sie sich einfach nur vernachlässigt vorkommen ;P
 
ok, super, nochmals Danke ^^

Systeminformationen auslesen klappt prima :D

Jedoch habe ich nichts bezüglich der Temperatur gefunden... was mir eigentlich am wichtigsten wäre?
Funktioniert das auch über WMI? Oder gar nicht? o_O
Kennt das Betriebssystem eigentlich die aktuelle Systemtemparatur oder wird das weitaus tiefer geregelt? Besonders bei meinem Rechner sehe ich die Temp nicht einmal im BIOS :confused:
 
Hey,

natürlich kannst du mit WMI auch die Temperaturen abfragen, es sei den, dein Mainboard bietet das nicht an (kein Sensor), was ich aber wage zu bezweifeln außer du hast ne ganz alte Kiste stehen :)

Für die Temperatur gibts verschiedene Möglichkeiten:
  • root\WMI, MSAcpi_ThermalZoneTemperature
  • root\WMI, Win32_TemperatureProbe
 
Verdammt, bist du gut :-o
Würde deinen Beitrag ja bewerten, aber geht erst, wenn ich andere userbeiträge bewertet habe.... aber ich merks mir! ^^

hm... aber wie erfahre ich, ob mein MainBoard nen Sensor hat?
Habe mal irgendwo gelesen, dass DELL Boards kein Hardware sensoring haben...
bei mir gehts um ein Alienware Notebook... die gehören doch auch praktisch zu Dell.
Und mir macht das Gedanken, dass ich nicht einmal im BIOS diese Informationen lesen kann...

Zur Verwendung:
ich versuche die Informationen mit einem ManagmentObject Searcher auszulesen, aber das scheint nicht wirklich zu funktionieren, ich erhalte Fehler wie "Ungültige Klasse" oder "nicht unterstützt"

mein Code:
C++:
try
{
	System::String ^ scope = "root\\WMI";
	System::String ^ query = "select * from MSAcpi_ThermalZoneTemperature"; // Error: Nicht unterstützt
	//System::String ^ query = "select * from Win32_TemperatureProbe";  // Error: Ungültige Klasse

	ManagementObjectSearcher ^searcher = gcnew
	ManagementObjectSearcher(scope, query);

	for each (ManagementObject ^obj in searcher->Get())
	{
		Console::WriteLine(obj->Properties["CurrentTemperature"]->Value);
	}
}
catch(System::Exception ^e)
{
	MessageBox::Show("Error!\n\n" + e->Message + 
		"\n" + e->StackTrace);
}

Verwende ich etwas falsch? :confused:

EDIT:
Btw, woher hast du die ganzen Informationen und weißt, woher du das bekommst?
Bei den von dir eingefügten Links finde ich nur Code zur verwendung von bestimmten Eigenschaften,
die MSDN funktioniert bei mir leider nicht... da hängt sich mein Rechner immer auf -.-

EDIT 2:
Ach mist, bin ich doof... die MSDN gibts ja eh online :(
Link to WMI: http://search.msdn.microsoft.com/se...nd=msdn&locale=de-de&refinement=00&lang=de-de
 
Zuletzt bearbeitet:
Hi,

hehe freut mich wenn ich dir helfen kann. Ich nutze dafür folgende Seiten:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/wmisdk/wmi/wmi_reference.asp

Und damit du prüfen kannst, welche Namespaces bzw. Klassen welche Informationen liefern, gibts von Microsoft direkt Tools:
http://www.microsoft.com/downloads/...53-1120-48DB-8CC5-F2ABDC3ED314&displaylang=en

http://www.microsoft.com/downloads/...64-ea15-4661-8da4-55bbc145c30e&displaylang=en

Wenn du bei diesen Tools schon keine Infos bekommst, hast du keinen Sensor drin.
 
Wenn du bei diesen Tools schon keine Infos bekommst, hast du keinen Sensor drin.
Wie keine Info? :confused:
Bei mir öffnet sich ein Browser Fenster, das leer ist -.-

Heißt das schon, es gibt keine Sensoren?

Das wär aber richtig doof -.-
Werd zuhause noch auf einem anderen Rechner probieren...

[Für alle, dies intressiert] Der Code für die aktuelle Temperatur würde wie folgt aussehen:
C++:
ManagementObjectSearcher ^searcher = 
	gcnew ManagementObjectSearcher("root\\WMI", 
		"SELECT * FROM MSAcpi_ThermalZoneTemperature"); 

	for each (ManagementObject ^queryObj in searcher->Get())
	{
		Console::WriteLine("-----------------------------------");
		Console::WriteLine("MSAcpi_ThermalZoneTemperature instance");
		Console::WriteLine("-----------------------------------");
		Console::WriteLine("CurrentTemperature: {0}", queryObj["CurrentTemperature"]);
	}
 
Also ich weiß z.B. das ich an diesem Rechner wo ich gerade arbeite, kein Sensor für Temperaturen habe (DELL Rechner). Da kommt bei mir nicht unterstützt als Fehlermeldung. Das meinte ich mit keine Infos.
 
Also ich weiß z.B. das ich an diesem Rechner wo ich gerade arbeite, kein Sensor für Temperaturen habe (DELL Rechner). Da kommt bei mir nicht unterstützt als Fehlermeldung. Das meinte ich mit keine Infos.
Verdammt... soetwas hatte ich befürchtet -.-

Aaaaaach Mist :( *grml*
Wollte eigentlich eine Überwachung für mein Alienwarenotebook schreiben, weil sich das nach ca. einer Stunde Crysis abdreht... ich vermute durch Überhitzung, aber war mir nicht sicher... Wenn ich da jetzt keine Temperaturfühler drinnen hab, muss ich ihn wohl oder übel einschicken mein Schatzi -.-

Oder n flaches Thermometer reinlegen :p *rofl*

Aber Danke Mann... das waren echt hilfreiche Informationen, das Programm werde ich wahrscheinlich trotzdem fertig schreiben
Massive Rep++ wenn ich wieder darf ^^

big Thx
mfg
der Leitman
 

Neue Beiträge

Zurück