WMI (Windows Management Instrumentation) ist eine Schnittstelle zum Ermitteln von Informationen (z.B. Batteriestatus, PC-Informationen, Festplatteninformationen, Netzwerkinformationen, Programme, ...), zum Ausführen von Methoden (z.B. Domain-Anmeldung, Lüfter-Steuerung, Netzwerkverbindungen aktivieren/deaktivieren, Drucker-Verwaltung, ...) und zum Abfragen von Events (z.B. ob Prozess gestartet oder beendet wurde, ...).
Funktionen:
- ExecuteWMIQuery()
- Syntax:
Code: Alles auswählen
Result = ExecuteWMIQuery(Namespace$, Query$, @Output$)
- Beschreibung: Führt eine Abfrage aus.
- Parameter:
- Namespace$: Bezeichnung des Namensraums.
- Query$: Abfrage der Klasse.
- @Output$: Das Ergebnis der Abfrage wird im XML-Format in die String-Variable gespeichert.
- Rückgabewert:
- 0: Der Vorgang war erfolgreich.
- Beispielcode:
Code: Alles auswählen
EnableExplicit Global PBEx_WMI CompilerIf #PB_Compiler_Processor = #PB_Processor_x86 PBEx_WMI = OpenLibrary(#PB_Any, "PB.Ex_WMI_x86.dll") CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64 PBEx_WMI = OpenLibrary(#PB_Any, "PB.Ex_WMI_x64.dll") CompilerEndIf If PBEx_WMI Prototype ExecuteWMIQuery(Namespace.p-Unicode, Query.p-Unicode, Output) Global ExecuteWMIQuery.ExecuteWMIQuery = GetFunction(PBEx_WMI, "ExecuteWMIQuery") Prototype ExecuteWMIMethod(Namespace.p-Unicode, Query.p-Unicode, Method.p-Unicode, ParameterArray, ParameterArraySize) Global ExecuteWMIMethod.ExecuteWMIMethod = GetFunction(PBEx_WMI, "ExecuteWMIMethod") Prototype WaitWMIEvent(Query.p-Unicode, Timeout = 0) Global WaitWMIEvent.WaitWMIEvent = GetFunction(PBEx_WMI, "WaitWMIEvent") Define Output$ = Space(1000000) ExecuteWMIQuery("root\CIMV2", "SELECT * FROM Win32_LogicalDisk", @Output$) ParseXML(1, Output$) FormatXML(1, #PB_XML_WindowsNewline | #PB_XML_ReFormat | #PB_XML_ReIndent) Debug ComposeXML(1) CloseLibrary(PBEx_WMI) EndIf
- Syntax:
- ExecuteWMIMethod()
- Syntax:
Code: Alles auswählen
Result = ExecuteWMIMethod(Namespace$, Query$, Method$, ParameterArray, ParameterArraySize)
- Beschreibung: Führt eine Methode aus.
- Parameter:
- Namespace$: Bezeichnung des Namensraums.
- Query$: Abfrage der Klasse und optional mit Bedingungen.
- Method$: Name der Methode, die ausgeführt werden soll.
- ParameterArray: Ein String-Array mit Parametern, die übergeben werden sollen. Parametername und -wert werden mit einem Gleichheitszeichen ohne Leerzeichen getrennt.
- ParameterArraySize: Anzahl der Elemente.
- Rückgabewert:
- 0: Der Vorgang war erfolgreich.
- Beispielcode:
Code: Alles auswählen
EnableExplicit Global PBEx_WMI CompilerIf #PB_Compiler_Processor = #PB_Processor_x86 PBEx_WMI = OpenLibrary(#PB_Any, "PB.Ex_WMI_x86.dll") CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64 PBEx_WMI = OpenLibrary(#PB_Any, "PB.Ex_WMI_x64.dll") CompilerEndIf If PBEx_WMI Prototype ExecuteWMIQuery(Namespace.p-Unicode, Query.p-Unicode, Output) Global ExecuteWMIQuery.ExecuteWMIQuery = GetFunction(PBEx_WMI, "ExecuteWMIQuery") Prototype ExecuteWMIMethod(Namespace.p-Unicode, Query.p-Unicode, Method.p-Unicode, ParameterArray, ParameterArraySize) Global ExecuteWMIMethod.ExecuteWMIMethod = GetFunction(PBEx_WMI, "ExecuteWMIMethod") Prototype WaitWMIEvent(Query.p-Unicode, Timeout = 0) Global WaitWMIEvent.WaitWMIEvent = GetFunction(PBEx_WMI, "WaitWMIEvent") ;Administratorrechte erforderlich Dim ParameterArray.s(0) ParameterArray(0) = "Name=YourNewUsername" Debug ExecuteWMIMethod("root\CIMV2", "Win32_UserAccount.Domain='YourWorkgroup',Name='YourUsername'", "Rename", ParameterArray(), ArraySize(ParameterArray())+1) CloseLibrary(PBEx_WMI) EndIf
- Syntax:
- WaitWMIEvent()
- Syntax:
Code: Alles auswählen
Result = WaitWMIEvent(Class$, Query$, Timeout = 0)
- Beschreibung: Wartet auf ein Event.
- Parameter:
- Query$: Abfrage der Klasse und optional mit Bedingungen.
- Timeout: Zeit in Millisekunden, wie lange maximal auf ein Event gewartet werden soll. Wenn nichts oder 0 angegeben wurde, dann wird so lange gewartet, bis das Event ausgelöst wurde.
- Rückgabewert:
- 0: Der Vorgang war erfolgreich.
- Beispielcode:
Code: Alles auswählen
EnableExplicit Global PBEx_WMI CompilerIf #PB_Compiler_Processor = #PB_Processor_x86 PBEx_WMI = OpenLibrary(#PB_Any, "PB.Ex_WMI_x86.dll") CompilerElseIf #PB_Compiler_Processor = #PB_Processor_x64 PBEx_WMI = OpenLibrary(#PB_Any, "PB.Ex_WMI_x64.dll") CompilerEndIf If PBEx_WMI Prototype ExecuteWMIQuery(Namespace.p-Unicode, Query.p-Unicode, Output) Global ExecuteWMIQuery.ExecuteWMIQuery = GetFunction(PBEx_WMI, "ExecuteWMIQuery") Prototype ExecuteWMIMethod(Namespace.p-Unicode, Query.p-Unicode, Method.p-Unicode, ParameterArray, ParameterArraySize) Global ExecuteWMIMethod.ExecuteWMIMethod = GetFunction(PBEx_WMI, "ExecuteWMIMethod") Prototype WaitWMIEvent(Query.p-Unicode, Timeout = 0) Global WaitWMIEvent.WaitWMIEvent = GetFunction(PBEx_WMI, "WaitWMIEvent") ;Administratorrechte erforderlich Debug "Warten, bis der Taschenrechner gestartet wurde..." If WaitWMIEvent("SELECT * FROM Win32_ProcessStartTrace WHERE ProcessName = 'calc.exe'") = 0 Debug "Taschenrechner wurde gestartet." Else Debug "Fehler" EndIf CloseLibrary(PBEx_WMI) EndIf
- Syntax:
- Windows XP oder höher
- .NET Framework 3.5 oder höher
- Unicode-Aktivierung (standardmäßig ab PB 5.50)
Es ist keine Assembly-Registrierung mit regasm.exe mit Administratorrechten notwendig wie bei COMatePLUS.
Lizenz: Diese DLL-Datei ist kostenlos und darf sowohl privat als auch kommerziell verwendet werden.
Folgende Copyright-Texte müssen mitgeliefert werden:
Download: https://www.rsbasic.de/downloads/downlo ... Ex_WMI.zipCopyright © 2019 RSBasic.de
Ich würde mich über Feedbacks, Verbesserungsvorschläge, Fehlermeldungen oder Wünsche sehr freuen. Wer mich unterstützen möchte, kann mir auch was kleines spenden. Danke