CPU Auslastung
-
Original erstellt von <"%"%"%"§>:
Es scheint mir als wären wir hier alle ein bisschen lächerlich. :oPass auf, man. Wir treffen uns im Chat und ich verprügel dich da.
-
Können wir mal wieder eine vernünftige Atmosphäre hier im WinAPI-Forum schaffen? Irgendwie beleidigen wir uns hier nur noch.
-
Original erstellt von mosta:
**Webfritzi mein Prog
**ich wollte nur nochmal dezent darauf hinweisen das du mein Prog nachdem Fehler durch suchen wolltest.
-
Äh ja. Habs mir noch nicht angeschaut.
-
ich warte schon die ganze Zeit ist zwar ziemlich unübersichtlich aber du solltest es finden.
-
Auf ein friedliches Winapi Forum, Streitschlichter!
Bin auch dafür. Das Forum ist vom Niveau ja in der letzten Zeit richtig abgesunken.
-
ok vergeben und vergessen
-
das hab ich bei google gefunden:
mfg
--------------------------------------------------------------------------- // Funktion GetCpuUsage() liefert die CPU-Auslastung des Systems //--------------------------------------------------------------------------- // Übergabeparameter: // Datentyp -> enum TPerfAction { paStart, paStop, paGetData }; // paStart -> Starten der Performance-Überwachung // paStop -> Beenden der Performance-Überwachung // paGetData -> für die Initialisierung der Performanceüberwachung //--------------------------------------------------------------------------- // Rückgabewerte: // -1 -> Fehler aufgetreten // 0 -> Ausführung erfolgreich (bei paAction == paStop oder // paAction == paStart) // 0-100 -> CPU-Auslastung in % (bei paAction == paGetData) //--------------------------------------------------------------------------- int GetCpuUsage(TPerfAction paAction) { int ilRetVal = 0; bool blError = false; int ilData = 0; DWORD lType = REG_DWORD; DWORD lSize = 4; HKEY hKey; AnsiString slKeyName = "PerfStats\\StatData"; if(paAction == paStart) slKeyName = "PerfStats\\StartStat"; else if(paAction == paStop) slKeyName = "PerfStats\\StopStat"; blError = RegOpenKeyEx(HKEY_DYN_DATA, slKeyName.c_str(), 0, KEY_READ, &hKey) != ERROR_SUCCESS; if(!blError) blError = RegQueryValueEx(hKey, "KERNEL\\CPUUsage", 0, &lType, (BYTE*)(&ilData), &lSize) != ERROR_SUCCESS; blError = RegCloseKey(hKey) != ERROR_SUCCESS; if(!blError && paAction == paGetData) ilRetVal = ilData; else if(!blError) ilRetVal = 0; else ilRetVal = -1; return ilRetVal; } Anwendungsbeispiel Verwendete Komponenten: Formular Form1 TLabel lblValue TLabel lblInterval TProgressBar ProgressBar1 TTimer Timer1 Quellcode: //--------------------------------------------------------------------------- // OnShow-Eventhandler des Formulars //--------------------------------------------------------------------------- void __fastcall TForm1::FormShow(TObject *Sender) { lblInterval -> Caption = FloatToStrF(double(TrackBar1->Position)/1000, ffFixed, 15, 1) + " S"; Timer1->Interval = TrackBar1->Position; if(GetCpuUsage(paStart)) { Timer1->Enabled = false; ShowMessage("Fehler beim Starten der Performance-Überwachung aufgetreten !"); } else { Application->ProcessMessages(); Timer1Timer(0); Timer1->Enabled = true; } } //--------------------------------------------------------------------------- // OnTimer-Eventhandler des Timers //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { // Daten holen: int ilCpuUsage = GetCpuUsage(paGetData); // Daten ausgeben: lblValue->Caption = (ilCpuUsage >= 0) ? AnsiString(IntToStr(ilCpuUsage)+ " %") : AnsiString("Fehler"); ProgressBar1 -> Position = ilCpuUsage >= 0 ? ilCpuUsage : 0; } //--------------------------------------------------------------------------- // OnClose-Eventhandler des Formulars //--------------------------------------------------------------------------- void __fastcall TForm1::FormClose(TObject *Sender, TCloseAction &Action) { Timer1->Enabled = false; GetCpuUsage(paStop); } //--------------------------------------------------------------------------- // OnChange-Eventhandler der TrackBar für die Interval-Einstellung //--------------------------------------------------------------------------- void __fastcall TForm1::TrackBar1Change(TObject *Sender) { lblInterval -> Caption = FloatToStrF(double(TrackBar1->Position)/1000, ffFixed, 15, 1) + " S"; Timer1->Interval = TrackBar1->Position;
-
ist aber glaub ich nur für WIN95 in Verbindung mit Microsofts sysmon.exe
-
NtQuerySystemInformation() für W2K ,NT
MfG Spacelord
-
SYSTEM_BASIC_INFORMATION
SYSTEM_TIMEOFDAY_INFORMATION
SYSTEM_PROCESS_INFORMATION
SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
SYSTEM_INTERRUPT_INFORMATION
SYSTEM_EXCEPTION_INFORMATION
SYSTEM_REGISTRY_QUOTA_INFORMATION structure.
SYSTEM_LOOKASIDE_INFORMATIONwas soll ich davon benutzen kann mir aus den Texten dazu keinen reim machen
-
Ist etwas umfangreicher zumal du die benötigten struct's selber deklarieren musst weil es zur ntdll.dll keinen Header gibt.Hab heute leider keine Zeit mehr aber wenns bis morgen Zeit hat helf ich dir gerne weiter
MfG Spacelord
-
Such über google. Da gibt es genug Informationen und Beispiele darüber.
-
SYSTEM_PROCESSOR_PERFORMANCE_INFORMATION
IdleTime
Nur XP und 2000
Mfg SytemPerformance
-
-
Original erstellt von Spacelord:
**Ist etwas umfangreicher zumal du die benötigten struct's selber deklarieren musst weil es zur ntdll.dll keinen Header gibt.Hab heute leider keine Zeit mehr aber wenns bis morgen Zeit hat helf ich dir gerne weiterMfG Spacelord :)**
ok dann warte ich
-
Hier steht doch alles haarklein beschrieben: http://msdn.microsoft.com/library/default.asp?url=/library/en-us/sysinfo/base/ntquerysysteminformation.asp
-
@ JSFreak wenn ich damit nicht klar komme, dann reicht das doch oder dann steht deine Sache doch garnicht mehr zur Debatte.(nichts gegen dich)
und bitte lass das nicht wieder in eine Beleidigungsorgie enden (mit dir hatte ich glaub ich noch keine. Wir wollen aber doch das niveou anheben)
das war rein deklaratorich
-
Ich habs mir fast gedacht, dass wieder so ein dummer Kommentar von mosta kommt. Willst die Lösung mal wieder in den Ar5ch geschoben bekommen. :o
-
du solltest dich wirklich nicht so dämlich anstellen mosta. die lösung läßt sich in einer minute mit google finden. ich dachte du wolltest beruflich etwas in richtung programmierung machen.