ich versuche grade die CPU Auslastung irgendwie auszulesen (Windows XP Sp 2). Hab es mit GetSystemTimes() probiert wie es auch in vielen stellen im internet beschrieben wird:
Wenn ich den test " > 0" nicht mache bekomme ich laufend "Division by zero" fehler. Im Task Manager haben die CPUs gemeinsam eine last von ca. 70%.. wenn ich die usage in einer endlosschleife abfrage kommt meist 0, manchmal 50 und ganz selten 100 raus.. sonst nichts.
Hat jemand eine Idee was ich verkehrt mache?
Aya~
PS: Wie nutzt man denn eigentlich das neue SyntaxHighlighting?
Registriert: Do Sep 02, 2004 19:42 Beiträge: 4158
Programmiersprache: FreePascal, C++
OT:
Aya hat geschrieben:
PS: Wie nutzt man denn eigentlich das neue SyntaxHighlighting?
Entweder indem du [code =sprache] (ohne Leerzeichen natürlich) oder [sprache] benutzt. C++ ist allerdings cpp da keine Sonderzeichen gehen.
greetings
_________________ If you find any deadlinks, please send me a notification – Wenn du tote Links findest, sende mir eine Benachrichtigung. current projects: ManiacLab; aioxmpp zombofant network • my photostream „Writing code is like writing poetry“ - source unknown
„Give a man a fish, and you feed him for a day. Teach a man to fish and you feed him for a lifetime. “ ~ A Chinese Proverb
das mit dem phd* schaut schon ganz vielversprechend aus, danke!
Aber, eine frage noch am rande.. da steht als Minimum supported System "Windows 2000 Professional" Nicht das ich vorhabe noch ältere Systeme zu unterstützen, aber.. nehmen wir an ich baue das bei mir ein und jemand startet mein Programm unter Windows 98.. stürzt es dann einfach ab weil die funktionen nicht aus irgendwelchen DLLs geladen werden können?
Worauf ich hinaus will.. es gibt ja öffters Funktionen die erst später in Windows verfügbar sind (z.B. ab Vista). Gibt es da sowas wie bei OpenGL das ich überprüfen kann ob diese Funktion verfügbar ist oder nicht und dann entsprechend reagiere?
Also etwa so:
Code:
int getCPUTime()
{
if(currentSystem()>= Win2kProf){
phdOpenQuery(...
..
..
return cpuQuery;
}
return0;
}
Geht das? Also werden die funktionen wie phdOpenQuery() einfach nicht geladen und sind NULL unter Win98? Oder crasht es?
Registriert: Do Dez 05, 2002 10:35 Beiträge: 4234 Wohnort: Dortmund
Also vom Prinzip funktioniert das in etwa so wie du das vorhast. Also überprüfen welches Windows man vor sich hat und entsprechend diese oder jede Methode benutzen. ABER. Meistens ist es so, dass die Methoden statisch gelinkt sind. Und dann überprüft bereits das Betriebssystem ob alle Methoden+DLLs vorhanden sind (dafür gibt es eine Tabelle in der Exe). Wenn nicht wird die Ausführung der Anwendung unterbunden. Benutzen kannst du so etwas dann allerdings nur, wenn die Methoden dynamisch zur Laufzeit geladen werden. Anders sieht es aus, wenn Flags die an Methoden übergeben werden plötzlich unter Vista/7 noch zusätzliche Werte kennen. Aber ist auch klar. Die Methoden gibt es dann schon.
Allerdings als Mindestvorrausstzung 2000 ist in meinen Augen vollkommen okay. Ich denke alleine diverse Systemkomponten etc. werden das von sich aus wohl schon vorschreiben. Dürfte den Aufwand nicht Wert sein, da was zu versuchen. Viel interessanter ist sicher ob unter Vista/7 noch auf die passenden Sachen zugreifen kannst ohne Adminrechte.
Ich meine ich hätte auch schon CPU Auslastung angezeigt. Ich habe das aber glaube via CPU-Zeit festgemacht. Mit irgendeiner funktion habe ich gemessen wie viel CPU-Zeit zu meinem letzten Messzeitpunkt vergangen ist und anhand davon konnte man sagen, dass ein Prozess in der letzten Sekunden knapp 2 Sekunden lang die CPU beschäftigt hat. Aber frag mich nicht mehr was das für eine Methode war. Müsste ich wenn dann zu Hause noch nachschauen. Wenn ich den Code überhaupt noch habe.
Registriert: So Sep 26, 2010 12:54 Beiträge: 238 Wohnort: wieder in Berlin
Programmiersprache: Englisch
Hi Aya, hi Lossy,
wie Lossy schon erwähnt hat macht es wenig Sinn Win9X noch zu unterstützen da, nicht nur Pdh, bereits andere Komponenten mindestens ein Windows NT haben möchten.
Falls Du es aber unbedingt brauchst kann ich Dir auch für Win9x code raussuchen der dir die CPU Auslastung ermittelt. Das funktioniert da ähnlich.
@Lossy Der Pdh kramt rennt auch in einem nicht admin usercontext.
Registriert: So Sep 26, 2010 12:54 Beiträge: 238 Wohnort: wieder in Berlin
Programmiersprache: Englisch
achso und Du solltest vielleicht nicht "getCPUTime()" als Namen verwenden, besser "getCPUUsage()" passt etwas besser, da Dir die Pdh Funktionen % liefern anstatt Sekunden
Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.