PB.Ex WMI (Windows)
Verfasst: 08.03.2018 21:50
Hallo,
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:
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:
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
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