CPU Zeit ermitteln !
-
Hallo Leute,
ich muß jetzt noch mal fragen, weill ich mal wieder nicht weiter komme.
Ich möchte in meinem Projet Infos über einen Prozess sammeln um darauf reagieren zu können.
Ich bekomme jetzt schon eineige Daten (PID, Erstellungsdatum).
Jetzt versuche ich verzweifelt eine Zeit heraus zu finden welche mir einen Prozess in Benutzung zeigt.
Dies versuche ich mit folgendes:
hProcess = OpenProcess (PROCESS_QUERY_INFORMATION, FALSE, pe32.th32ProcessID); dwPriorityClass = GetPriorityClass (hProcess); GetProcessTimes(hProcess, &CreationTime, &ExitTime, &KernelTime, &UserTime); //Wenn eine Falsche CreationTime kommt dann abfangen.... TRY { m_strEXE = pe32.szExeFile; // if(m_strEXE == "notepad.exe") if(m_strEXE == "ccApp.exe") { CTime tZeit = CTime(UserTime); int iHour = tZeit.GetHour(); int iMinute = tZeit.GetMinute(); int iSecond = tZeit.GetSecond(); CTimeSpan m_tsProzessZeit(NULL,iHour,iMinute,iSecond); /* CString strProcess; strProcess.Format("%s - %02d.%02d.%d - %02d:%02d:%02d", pe32.szExeFile, iDay, iMonth, iYear, iHour, iMinute, iSecond); */ m_strEXE = pe32.szExeFile; m_IDEXE = pe32.th32ProcessID; cout << "Der Prozess: " << m_strEXE << " " << m_IDEXE << " " << m_tsProzessZeit.GetTotalSeconds() << endl;Die CreationTime bekomme ich heraus, die Zeigt er auch, aber nicht UserTime oder gar die KernelTime, dort steht immer 1 Stunde......
Was mache ich falsch ??
Gruß und Danke
andy_mann
-
Hallo,
kann mir jemand vielleicht erklären was für Werte ich bei verschiedenen Variablen heraus bekomme.
Ich lass mir eimal z.b. aus der
GetProcessTimes(hProcess, &CreationTime, &ExitTime, &KernelTime, &UserTime);
KernelTime.dwHighDateTime --> sehr kleine Zahl
KernelTime.dwLowDateTime -- > sehr hohe Zahl
auf dem Monitor anzeigen.Das sind aber werte die wie ich sie auch drehe und umrechne keinesfalls die Werte im TaskManager angezeigt werden übereinstimmen.
Ich checke es einfach nicht was und wie ich damit umgehen muß ??
Kann mir keiner Helfen ??
Gruß
andy_mann
-
Wie wär's mit Dokumentation lesen? Steht alles bei der Funktion GetProcessTimes erklärt.
-
Mmmhh...
da wahr ich schon, leider halt wie immer auf enfglisch, vileicht erbarmt sich ja jemand und hat ein paar einfache worte...
Gruß
andy_mann
-
Wenn du nicht englisch kannst, dann lern erst mal das.
FILETIME ist ein 64bit-Wert und gibt die Anzahl der 100-Nanosekundenintervalle seit 00:00, 1. Jänner 1601 GMT an. Division durch 10.000.000 müsste also Sekunden ergeben.