Buchempfehlung
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
Windows-Programmierung. Das Entwicklerhandbuch zur WIN32-API
"Der" Petzold, das über 1000 Seiten starke Standardwerk zum Win32-API - besonders nützlich u. a. bei der GUI-Programmierung in FreeBASIC! [Mehr Infos...]
FreeBASIC-Chat
Es sind Benutzer im FreeBASIC-Chat online.
(Stand:  )
FreeBASIC bei Twitter
Twitter FreeBASIC-Nachrichten jetzt auch über Twitter erhalten. Follow us!

Code-Beispiel

Code-Beispiele » System

Win32_Process, Prozeßliste via WMI

Lizenz:Erster Autor:Letzte Bearbeitung:
k. A.Redakteurytwinky 28.04.2012

WMI bietet 40(in Worten:vierzig) Eigenschaften pro Prozeß an. Davon sind aber nicht alle besetzt bzw. nicht alle sind interessant, aber dies muß jeder für sich selbst entscheiden. Meine persönliche Ergänzung ist die Ausgabe der Eigenschaften mit Prozeß-Nummer.Eigenschafts-Nr, wenn man von der Erstellung ansich mal absieht ;-)
Die Benutzung von WMI(Windows Management Instrumentation) schränkt den Benutzerkreis soweit ein, daß 1. Windows laufen muß und 2. WMI installiert sein muß..
Doch nun der Code:

#include once "windows.bi"               'in
#define UNICODE                          'this
#include once "disphelper/disphelper.bi" 'order
#include "vbcompat.bi"
'CSName
'CommandLine
'Description
'ExecutablePath
'ExecutionState
'Handle
'HandleCount
'InstallDate
'KernelModeTime
'MaximumWorkingSetSize
'MinimumWorkingSetSize
'Name
'OSName
'OtherOperationCount
'OtherTransferCount
'PageFaults
'PageFileUsage
'ParentProcessId
'PeakPageFileUsage
'PeakVirtualSize
'PeakWorkingSetSize
'Priority
'PrivatePageCount
'ProcessId
'QuotaNonPagedPoolUsage
'QuotaPagedPoolUsage
'QuotaPeakNonPagedPoolUsage
'QuotaPeakPagedPoolUsage
'ReadOperationCount
'ReadTransferCount
'SessionId
'Status
'TerminationDate
'ThreadCount
'UserModeTime
'VirtualSize
'WindowsVersion
'WorkingSetSize
'WriteOperationCount
'WriteTransferCount

Const strComputer="." 'oder "localhost" oder Environ("ComputerName")
Const impersonate="winmgmts:{impersonationLevel=impersonate}!\\" &strComputer &"\root\cimv2"
Var strServer="localhost", SelectClass="", i=0
Dim As HRESULT hres
Dim As ZString Ptr devCSName, devCommandLine, devDescription, devExecutablePath
Dim As ZString Ptr devExecutionState, devHandle, devHandleCount, devInstallDate
Dim As ZString Ptr devKernelModeTime, devMaximumWorkingSetSize, devMinimumWorkingSetSize, devName
Dim As ZString Ptr devOSName, devOtherOperationCount, devOtherTransferCount, devPageFaults
Dim As ZString Ptr devPageFileUsage, devParentProcessId, devPeakPageFileUsage, devPeakVirtualSize
Dim As ZString Ptr devPeakWorkingSetSize, devPriority, devPrivatePageCount
Dim As ZString Ptr devProcessId, devQuotaNonPagedPoolUsage, devQuotaPagedPoolUsage, devQuotaPeakNonPagedPoolUsage
Dim As ZString Ptr devQuotaPeakPagedPoolUsage, devReadOperationCount, devReadTransferCount
Dim As ZString Ptr devSessionId, devStatus, devTerminationDate, devThreadCount
Dim As ZString Ptr devUserModeTime, devVirtualSize, devWindowsVersion
Dim As ZString Ptr devWorkingSetSize, devWriteOperationCount, devWriteTransferCount
DISPATCH_OBJ(wmiSvc)
DISPATCH_OBJ(colProcess)
dhInitialize(True)
SelectClass="Select * From Win32_Process"
Print "Aktuelle Prozesse von " &strServer &".."
'configure, whether errors should be displayed or not:
'dhToggleExceptions(TRUE) 'if desired remove the first ' ;-))
hres=dhGetObject(impersonate, NULL, @wmiSvc)
hres=dhGetValue("%o", @colProcess, wmiSvc, ".ExecQuery(%s)", SelectClass)
FOR_EACH0(objProcess, colProcess, NULL)
  hres=dhGetValue("%s", @devCSName, objProcess, ".CSName")
    hres=dhGetValue("%s", @devCommandLine, objProcess, ".CommandLine")
    hres=dhGetValue("%s", @devDescription, objProcess, ".Description")
    hres=dhGetValue("%s", @devExecutablePath, objProcess, ".ExecutablePath")
    hres=dhGetValue("%s", @devExecutionState, objProcess, ".ExecutionState")
    hres=dhGetValue("%s", @devHandle, objProcess, ".Handle")
    hres=dhGetValue("%s", @devHandleCount, objProcess, ".HandleCount")
    hres=dhGetValue("%s", @devInstallDate, objProcess, ".InstallDate")
    hres=dhGetValue("%s", @devKernelModeTime, objProcess, ".KernelModeTime")
    hres=dhGetValue("%s", @devMaximumWorkingSetSize, objProcess, ".MaximumWorkingSetSize")
    hres=dhGetValue("%s", @devMinimumWorkingSetSize, objProcess, ".MinimumWorkingSetSize")
    hres=dhGetValue("%s", @devName, objProcess, ".Name")
    hres=dhGetValue("%s", @devOSName, objProcess, ".OSName")
    hres=dhGetValue("%s", @devOtherOperationCount, objProcess, ".OtherOperationCount")
    hres=dhGetValue("%s", @devOtherTransferCount, objProcess, ".OtherTransferCount")
    hres=dhGetValue("%s", @devPageFaults, objProcess, ".PageFaults")
    hres=dhGetValue("%s", @devPageFileUsage, objProcess, ".PageFileUsage")
    hres=dhGetValue("%s", @devParentProcessId, objProcess, ".ParentProcessId")
    hres=dhGetValue("%s", @devPeakPageFileUsage, objProcess, ".PeakPageFileUsage")
    hres=dhGetValue("%s", @devPeakVirtualSize, objProcess, ".PeakVirtualSize")
    hres=dhGetValue("%s", @devPeakWorkingSetSize, objProcess, ".PeakWorkingSetSize")
    hres=dhGetValue("%s", @devPriority, objProcess, ".Priority")
    hres=dhGetValue("%s", @devPrivatePageCount, objProcess, ".PrivatePageCount")
    hres=dhGetValue("%s", @devProcessId, objProcess, ".ProcessId")
    hres=dhGetValue("%s", @devQuotaNonPagedPoolUsage, objProcess, ".QuotaNonPagedPoolUsage")
    hres=dhGetValue("%s", @devQuotaPagedPoolUsage, objProcess, ".QuotaPagedPoolUsage")
    hres=dhGetValue("%s", @devQuotaPeakNonPagedPoolUsage, objProcess, ".QuotaPeakNonPagedPoolUsage")
    hres=dhGetValue("%s", @devQuotaPeakPagedPoolUsage, objProcess, ".QuotaPeakPagedPoolUsage")
    hres=dhGetValue("%s", @devReadOperationCount, objProcess, ".ReadOperationCount")
    hres=dhGetValue("%s", @devReadTransferCount, objProcess, ".ReadTransferCount")
    hres=dhGetValue("%s", @devSessionId, objProcess, ".SessionId")
    hres=dhGetValue("%s", @devStatus, objProcess, ".Status")
    hres=dhGetValue("%s", @devTerminationDate, objProcess, ".TerminationDate")
    hres=dhGetValue("%s", @devThreadCount, objProcess, ".ThreadCount")
    hres=dhGetValue("%s", @devUserModeTime, objProcess, ".UserModeTime")
    hres=dhGetValue("%s", @devVirtualSize, objProcess, ".devVirtualSize")
    hres=dhGetValue("%s", @devWindowsVersion, objProcess, ".devWindowsVersion")
    hres=dhGetValue("%s", @devWorkingSetSize, objProcess, ".WorkingSetSize")
    hres=dhGetValue("%s", @devWriteOperationCount, objProcess, ".WriteOperationCount")
    hres=dhGetValue("%s", @devWriteTransferCount, objProcess, ".WriteTransferCount")
    i+=1
  Print Format(i, "0#") &".01 CSName:" &*devCSName
  Print Format(i, "0#") &".02 CommandLine:" &*devCommandLine
  Print Format(i, "0#") &".03 Description:" &*devDescription
  Print Format(i, "0#") &".04 ExecutablePath:" &*devExecutablePath
  Print Format(i, "0#") &".05 ExecutionState:" &*devExecutionState
  Print Format(i, "0#") &".06 Handle:" &*devHandle
  Print Format(i, "0#") &".07 HandleCount:" &*devHandleCount
  Print Format(i, "0#") &".08 InstallDate:" &*devInstallDate
  Print Format(i, "0#") &".09 KernelModeTime:" &*devKernelModeTime
  Print Format(i, "0#") &".10 MaximumWorkingSetSize:" &*devMaximumWorkingSetSize
  Print Format(i, "0#") &".11 MinimumWorkingSetSize:" &*devMinimumWorkingSetSize
  Print Format(i, "0#") &".12 Name:" &*devName
  Print Format(i, "0#") &".13 OSName:" &*devOSName
  Print Format(i, "0#") &".14 OtherOperationCount:" &*devOtherOperationCount
  Print Format(i, "0#") &".15 OtherTransferCount:" &*devOtherTransferCount
  Print Format(i, "0#") &".16 PageFaults:" &*devPageFaults
  Print Format(i, "0#") &".17 PageFileUsage:" &*devPageFileUsage
  Print Format(i, "0#") &".18 ParentProcessId:" &*devParentProcessId
  Print Format(i, "0#") &".19 PeakPageFileUsage:" &*devPeakPageFileUsage
  Print Format(i, "0#") &".20 PeakVirtualSize:" &*devPeakVirtualSize
  Print Format(i, "0#") &".21 PeakWorkingSetSize:" &*devPeakWorkingSetSize
  Print Format(i, "0#") &".22 Priority:" &*devPriority
  Print Format(i, "0#") &".23 PrivatePageCount:" &*devPrivatePageCount
  Print Format(i, "0#") &".24 ProcessId:" &*devProcessId
  Print Format(i, "0#") &".25 QuotaNonPagedPoolUsage:" &*devQuotaNonPagedPoolUsage
  Print Format(i, "0#") &".26 QuotaPagedPoolUsage:" &*devQuotaPagedPoolUsage
  Print Format(i, "0#") &".27 QuotaPeakNonPagedPoolUsage:" &*devQuotaPeakNonPagedPoolUsage
  Print Format(i, "0#") &".28 QuotaPeakPagedPoolUsage:" &*devQuotaPeakPagedPoolUsage
  Print Format(i, "0#") &".29 ReadOperationCount:" &*devReadOperationCount
  Print Format(i, "0#") &".30 ReadTransferCount:" &*devReadTransferCount
  Print Format(i, "0#") &".31 SessionId:" &*devSessionId
  Print Format(i, "0#") &".32 Status:" &*devStatus
  Print Format(i, "0#") &".33 TerminationDate:" &*devTerminationDate
  Print Format(i, "0#") &".34 ThreadCount:" &*devThreadCount
  Print Format(i, "0#") &".35 UserModeTime:" &*devUserModeTime
  Print Format(i, "0#") &".36 VirtualSize:" &*devVirtualSize
  Print Format(i, "0#") &".37 WindowsVersion:" &*devWindowsVersion
  Print Format(i, "0#") &".38 WorkingSetSize:" &*devWorkingSetSize
  Print Format(i, "0#") &".39 WriteOperationCount:" &*devWriteOperationCount
  Print Format(i, "0#") &".40 WriteTransferCount:" &*devWriteTransferCount
NEXT_(objProcess)
SAFE_RELEASE(wmiSvc)
SAFE_RELEASE(colProcess)
dhUninitialize(True)
Print "Eniki..";
GetKey

Fröhliches Prozesselisten
Gruß
ytwinky


Zusätzliche Informationen und Funktionen
  • Das Code-Beispiel wurde am 28.04.2012 von Redakteurytwinky angelegt.
  • Die aktuellste Version wurde am 28.04.2012 von Redakteurytwinky gespeichert.
  Bearbeiten Bearbeiten  

  Versionen Versionen