Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1672to1676
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Prozess überwachen mit VBA

Prozess überwachen mit VBA
31.01.2019 15:44:10
Sebastian

Hallo,
ich habe mal eine Frage – ich möchte gern mal einen Prozess überwachen, ob sich die Speichernutzung ändert.
Zu Zeit habe ich schonmal rausgefunden wie ich die Prozesse einlesen kann, aber ich finde nicht den Arbeitsspeicher. Hat jemand eine Idee wie man den Arbeitsspeicher überwachen kann oder noch besser, wie man einen Prozess auf Änderungen überwacht?
Vielen Dank und viele Grüße
Mars
Sub Prozesse_auflisten()
Set objWindowsService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colProcessList = objWindowsService.ExecQuery _
("SELECT * FROM Win32_Process")
For Each objProcess In colProcessList
a = a + 1 'Zeilenzähler
Cells(a, 1).Value = objProcess.Name 'Ausgabe
Cells(a, 2).Value = objProcess.ProcessId 'Id
Cells(a, 3).Value = objProcess.WorkingSetSize
Next objProcess
End 

Sub


		

10
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
Nicht VBA, sondern Taskmanager! (owT)
31.01.2019 15:45:54
EtoPHG

AW: Nicht VBA, sondern Taskmanager! (owT)
31.01.2019 15:47:08
Sebastian
Ich möchte es gerne in excel Überwachen
AW: PowerShell
31.01.2019 15:57:25
Fennek
Hallo,
heute wurde in einem Window-Forum dieser Code gezeigt:

$Test = 1
$Prozout = "Prozessorlast"
$Ramout = "Speicherlast"
$Out = "$env:userprofile\desktop\CpuRam.txt"
Do
{
$Date = get-date -format G
$CPU = (get-wmiobject Win32_processor).Loadpercentage
$Mem = (get-wmiobject Win32_PerfRawData_PerfOS_Memory).CommittedBytes /1GB
Write-output $Date | out-file $Out -append -noclobber
Write-Output "$Prozout = $CPU %" | out-file $Out -append -noclobber
Write-Output "$Ramout = $Mem GigaByte" | out-file $Out -append -noclobber
Write-Output " " | out-file $Out -append -noclobber
Sleep 1
}
While ($Test = 1)
Es muss mit der Endung ".ps1" gespeichert werden und mit der rechten Maustaste "mit PowerShell ausführen" gestartet werden.
mfg
(Quelle: https://www.win-10-forum.de/windows-10-allgemeines/107361-auslastung-tracken-win10-embedded.html)
Anzeige
AW: PowerShell
31.01.2019 16:12:10
Sebastian
Gibt es keine Möglichkeit den Speicher in VBA auszulesen?
PS ist bei mir deaktiviert :-( Kann ich nicht ausführen
AW: DuckDuckGo
31.01.2019 16:35:01
Fennek
https://analystcave.com/excel-measuring-cpu-usage-in-vba-and-other-performance-metrics/

strComputer = "." 'Local machine, can be adjusted to access remote workstations
Set objWMIService = GetObject("winmgmts:\" & strComputer & "rootcimv2")
Set colItems = objWMIService.ExecQuery( _
"SELECT * FROM Win32_PerfFormattedData_PerfOS_Processor",,48)
For Each objItem in colItems
Debug.Print "-----------------------------------"
Debug.Print "Win32_PerfFormattedData_PerfOS_Processor instance"
Debug.Print "-----------------------------------"
Debug.Print "PercentProcessorTime: " & objItem.PercentProcessorTime
Next

Anzeige
AW: PowerShell
31.01.2019 17:56:02
Nepumuk
Hallo Sebastian,
teste mal:
Option Explicit

Private Declare Sub Sleep Lib "kernel32.dll" ( _
    ByVal dwMilliseconds As Long)

Public Sub test1()
    
    Dim objProcess As Object, objItem As Object
    Dim lngIndex As Long, blnOutput As Boolean
    
    For lngIndex = 1 To 100
        Set objProcess = GetObject("winmgmts:").InstancesOf( _
            "Win32_Process WHERE Name LIKE 'AcroRd%'")
        
        For Each objItem In objProcess
            If blnOutput Then Debug.Print objItem.PrivatePageCount / 1024 / 1024
            blnOutput = Not blnOutput
        Next
        Call Sleep(1000)
        DoEvents
    Next
End Sub

Es wird der AcrobatReader überwacht (AcroRD32.exe). Es sind ein paar MB's mehr da der Taskmanager nur den realen Arbeitsspeicher anzeigt, mein Makro aber die Auslagerungsdatei (PageFile.sys) mit berücksichtigt.
Gruß
Nepumuk
Anzeige
AW: Prozess überwachen mit VBA
31.01.2019 16:57:56
Zwenn
Moin Sebastian,
folgende Quelle für den Zugang zu den Prozessen über VBA:
http://www.excel-inside.de/vba-loesungen/sonstiges/987-windows-prozesse-auslesen-und-beenden
Folgende Quelle für alle möglichen Parameter:
http://docs.microsoft.com/en-us/windows/desktop/cimwin32prov/win32-process
Direkt den belegten Speicher habe ich nicht gesehen auf die Schnelle. Der Parameter WorkingSetSize scheint mir am nächsten zu kommen. Kannst Du einfach statt name im Beispielscript einsetzen.

Sub Prozesse_auflisten()
'** Alle Prozesse ab Zelle A1 auflisten
'** Vorgaben definieren
Set objWindowsService = GetObject("winmgmts:" & _
"{impersonationLevel=impersonate}!\\.\root\cimv2")
'** Abfrage der aktiven Prozesse
Set colProcessList = objWindowsService.ExecQuery("SELECT * FROM Win32_Process")
'** Selektierte Prozessliste durchlaufen
For Each objProcess In colProcessList
a = a + 1 'Zeilenzähler
Cells(a, 1).Value = objProcess.Name 'Ausgabe Name
Cells(a, 2).Value = objProcess.WorkingSetSize 'Ausgabe benötigter Speicher zum Arbeiten
Next objProcess
End Sub
Viele Grüße,
Zwenn
Anzeige
AW: Prozess überwachen mit Word
31.01.2019 17:18:34
Fennek
wenn es darum geht die Prozesse aufzulisten und ggf zu beenden, geht das mit MS-Word:

Sub M_snb()
with createobject("word.application")
For Each it In .Tasks
c00 = c00 & vbCr & it.Name
Next
.quit
end with
msgbox "__very link.xlsb ist " & format(instr(c00,"Microsoft Excel - __very link.xlsb")0," _
yes/no") & " geladen"
end sub
(von snb)
AW: Prozess überwachen mit Word
31.01.2019 17:29:33
Zwenn
Hi Fennek,
er will ja den Arbeitsspeicher. Ich habe ja nicht mehr gemacht, als sein Script mit der Quelle zu versehen und zusätzlich anzugeben, was sich über das Win32-Objekt für Parameter abfragen lassen. Näher habe ich mich damit nicht beschäftigt. Also weiß ich jetzt nicht, was damit wie möglich ist :-)
Viele Grüße,
Zwenn
Anzeige
AW: Prozess überwachen mit Word
31.01.2019 17:32:27
Sebastian
Es funktioniert mit dem WorkingSetSize,
ich möchte nur eine Meldung wenn der Wert ungewöhnlich hoch ist.
Ich lasse das jetzt in einer Schleife laufen und bekomme ein Meldung :-)
Vielen Dank nochmal

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige