Bereits laufender Prozess Auslastung ermitteln
-
- Beiträge: 250
- Registriert: 25.11.2004 19:51
- Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS
Bereits laufender Prozess Auslastung ermitteln
Hallo zusammen,
ich versuche gerade von einem bereits laufendem Prozess via PB die aktuelle Prozessorlast und Arbeitsspeichergröße zu ermitteln. (Taskmanager -> Reiter Prozesse)
An die PID der einzelnen Prozesse komme ich heran.
Hat hier jemand eine Idee wie ich das lösen könnte?
LG und merci im Vorraus
ich versuche gerade von einem bereits laufendem Prozess via PB die aktuelle Prozessorlast und Arbeitsspeichergröße zu ermitteln. (Taskmanager -> Reiter Prozesse)
An die PID der einzelnen Prozesse komme ich heran.
Hat hier jemand eine Idee wie ich das lösen könnte?
LG und merci im Vorraus
PB 4.6 / 32 Bit / 64 Bit
Re: Bereits laufender Prozess Auslastung ermitteln
Beispielsweise mit WMI (benötigt COMate von srod):
Grüße ... Kiffi
Code: Alles auswählen
IncludePath #PB_Compiler_Home + "srod\comateplus\" ; Pfad anpassen
XIncludeFile "comateplus.pbi"
EnableExplicit
Procedure.s WMI_ExecQuery(Query.s, Fieldname.s)
Protected objWMIService.COMateObject
Protected objItem.COMateObject
Protected colItems.COMateEnumObject
Protected Computer.s
Protected Value.s
Protected Z1, Z2
Value = "-1"
Computer = "."
Z1 = ElapsedMilliseconds()
objWMIService = COMate_GetObject("winmgmts:\\" + Computer + "\root\cimv2", "")
If objWMIService
Query = ReplaceString(Query, "'", "$0027")
colItems = objWMIService\CreateEnumeration("ExecQuery('" + Query + "')")
If colItems
objItem = colItems\GetNextObject()
While objItem
Value = objItem\GetStringProperty(Fieldname)
objItem\Release()
objItem = colItems\GetNextObject()
Wend
colItems\Release()
Else
Debug("!colItems")
EndIf
objWMIService\Release()
Else
Debug("!objWMIService")
EndIf
Z2 = ElapsedMilliseconds()
; Debug(Fieldname + ": " + Value + " (" + Str(Z2-Z1) + " ms)")
ProcedureReturn Value
EndProcedure
Debug "AvailableMBytes: " + WMI_ExecQuery("Select * FROM Win32_PerfFormattedData_PerfOS_Memory", "AvailableMBytes")
Debug "LoadPercentage: " + WMI_ExecQuery("SELECT * FROM Win32_Processor", "LoadPercentage")
a²+b²=mc²
-
- Beiträge: 250
- Registriert: 25.11.2004 19:51
- Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS
Re: Bereits laufender Prozess Auslastung ermitteln
Merci für dein Lösungsansatz.
Gibts evtl. ohne das COMate eine Lösung?
ich habe was gefunden was die PID ermittelt - evtl. kann jemand der sich hier ein wenig mehr auskennt als ich das für die aktuelle Last umbauen?
Merci nochmals für die Mithilfe.
Gibts evtl. ohne das COMate eine Lösung?
ich habe was gefunden was die PID ermittelt - evtl. kann jemand der sich hier ein wenig mehr auskennt als ich das für die aktuelle Last umbauen?
Code: Alles auswählen
Structure PROCESSENTRY32s
dwsize.l
cntusage.l
th32ProcessID.l
th32DefaultHeapID.l
th32ModuleID.l
cntThreads.l
th32ParentProcessID.l
pcPriClassBase.l
dwFlags.l
szExeFile.s{1024}
EndStructure
Procedure.l FindPid(s.s)
Process.PROCESSENTRY32s
ProcSnap.l
ProcSnap = CreateToolhelp32Snapshot_(#TH32CS_SNAPPROCESS, 0)
If ProcSnap <> 0
Process\dwsize=SizeOf(Process)
Process32First_(ProcSnap, Process)
While Process32Next_(ProcSnap, Process) > 0
If Process\szExeFile = s
ProcedureReturn Process\th32ProcessID
Break
EndIf
Wend
EndIf
EndProcedure
Debug FindPid("explorer.exe")
PB 4.6 / 32 Bit / 64 Bit
Re: Bereits laufender Prozess Auslastung ermitteln
http://pbosl.purearea.net/pbosl_src.zip
Siehe "PBOSL_Process", da hast du alle WinAPIs, die du brauchst, um die Auslastung und Größe zu ermitteln.
Siehe "PBOSL_Process", da hast du alle WinAPIs, die du brauchst, um die Auslastung und Größe zu ermitteln.
Re: Bereits laufender Prozess Auslastung ermitteln
Ich beschäftige mich gerade auch mit der CPU Auslastung eines einzelnen Programmes,RSBasic hat geschrieben:http://pbosl.purearea.net/pbosl_src.zip
Siehe "PBOSL_Process", da hast du alle WinAPIs, die du brauchst, um die Auslastung und Größe zu ermitteln.
aber zur Auslastung hab ich keine API-Funktion gefunden. In der PBOSL fand ich lediglich
zum Auslesen des Speicherverbrauchs Funktionen...
Könnte mir jemand einen Tipp geben ?
PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
Re: Bereits laufender Prozess Auslastung ermitteln
Suchst du etwa das hier? http://www.purebasic.fr/english/viewtop ... 00&start=3
Re: Bereits laufender Prozess Auslastung ermitteln
BingoRSBasic hat geschrieben:Suchst du etwa das hier? http://www.purebasic.fr/english/viewtop ... 00&start=3

PureBasic 6.21 (Windows x86/x64) | Windows11 Pro x64 | AsRock B850 Steel Legend Wifi | R7 9800x3D | 64GB RAM | GeForce RTX 5080 | ThermaltakeView 270 TG ARGB | build by vannicom
-
- Beiträge: 250
- Registriert: 25.11.2004 19:51
- Computerausstattung: Alienware Aurora / Intel Core i7 CPU @ 2.8 GHz / 64 Bit OS
Re: Bereits laufender Prozess Auslastung ermitteln
Hey ho - also Prinzipiell ist das ja genua das was ich brauche - nur - blick ichs mal auf keinem Auge. Evtl. hat ja jemand die Erfahrung und kann mir das ein wenig umsticken?
Idealerweise als Prozedure ohne Thread aufruf der ich dann einfach die PID oder den Prozessname mitgeben kann und als Rückgabe Wert erhalte ich die aktuelle CPU auslastung des angegeben Prozesses.
Währe euch echt sehr dankbar.
LG und merci
Idealerweise als Prozedure ohne Thread aufruf der ich dann einfach die PID oder den Prozessname mitgeben kann und als Rückgabe Wert erhalte ich die aktuelle CPU auslastung des angegeben Prozesses.
Währe euch echt sehr dankbar.
LG und merci
PB 4.6 / 32 Bit / 64 Bit