CPU-Auslastung eines Prozesses mit VB auslesen

  • #1
K

kannauchnix

Neues Mitglied
Themenersteller
Dabei seit
09.05.2005
Beiträge
2
Reaktionspunkte
0
Hallo, ich hab ein Problem mit der Prozessüberwachung. Ich sollte daher die Prozessorlast eines
einzelnen Prozesses mit VB auslesen (wie eigentlich auch im Taskmanager von Win angezeigt wird).
Könnte ich evtl. über die API fündig werden ?
Würde mich über jede Hilfe freuen.

Danke
 
  • #3
Danke für den Tip, aber leider bezieht sich der Code nur auf die gesamte Auslastung und nicht auf die eines Przesses.
 
  • #4
Deswegen steht da ja auch Ansatz und nicht fertige copy and paste Lösung. ;)

Eddie
 
  • #5
Hallo,

ich bin mir nicht ganz sicher, ob das dein Problem löst,
aber du könntest es mal mit der API GetProcessTimes() versuchen.
Damit kannst du die CPU-Zeiten auslesen, die ein Prozess im Kernel-Mode, bzw. User-Mode verbraucht.
Das für GetProcessTimes() nötige  Prozess-Handle holst du dir mit OpenProcess(), wobei du die Prozess-Id des Prozesses wissen musst, den du verarbeiten willst.
Mit GetProcessIoCounters() kannst du auch noch die I/O-Aktivitäten überwachen.

Gruss

Reiner
 
  • #6
Vielen Dank für Eure Mühe, ich bin über WSH endlich drübergestolpert und hab's dann in VB umgesetzt.
die Lösung geht über WMI und funktioniert super.
Hier das originale Scribt (VBS) indem die Aktivität der notepad.exe geprüft wird:

'Get % Processor Time for a process
'Connect to Local Machine
set wmi_service = GetObject(winmgmts:{impersonationlevel=impersonate}!\root\cimv2)

sObjectPath = Win32_PerfRawData_PerfProc_Process.Name= & chr(34) & notepad & chr(34)
wscript.echo sObjectPath

set perf_instance1 = wmi_service.get( sObjectPath )
N1 = perf_instance1.PercentProcessorTime
D1 = perf_instance1.TimeStamp_Sys100NS

while true

'Sleep for one second = 1000 ms
wscript.sleep(1000)

set perf_instance2 = wmi_service.get( sObjectPath )
N2 = perf_instance2.PercentProcessorTime
D2 = perf_instance2.TimeStamp_Sys100NS

' CounterType - PERF_100NSEC_TIMER
' Formula = ((N2 - N1) / (D2 - D1)) x 100

if ( 0 = (D2-D1) ) then
wscript.echo divide by zero
else
PercentProcessorTime = ((N2 - N1) / (D2 - D1)) * 100
wscript.echo % Processor Time = , PercentProcessorTime
end if

N1 = N2
D1 = D2
wend

set wmi_service = nothing

Vieleicht kann ich damit einem Mitleidenden weiterhelfen.
 
Thema:

CPU-Auslastung eines Prozesses mit VB auslesen

ANGEBOTE & SPONSOREN

Statistik des Forums

Themen
113.838
Beiträge
707.961
Mitglieder
51.491
Neuestes Mitglied
haraldmuc
Oben