Aktuelle Zeit: 16.08.2018 09:55

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]




Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 
Autor Nachricht
 Betreff des Beitrags: PB.Ex WMI (Windows)
BeitragVerfasst: 08.03.2018 21:50 
Offline
Moderator
Benutzeravatar

Registriert: 05.10.2006 18:55
Wohnort: Rupture Farms
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:
  • ExecuteWMIQuery()
    • Syntax:
      Code:
      Result = ExecuteWMIQuery(Namespace$, Query$, @Output$)

    • Beschreibung: Führt eine Abfrage aus.
    • Parameter:
      1. Namespace$: Bezeichnung des Namensraums.
      2. Query$: Abfrage der Klasse.
      3. @Output$: Das Ergebnis der Abfrage wird im XML-Format in die String-Variable gespeichert.
    • Rückgabewert:
      • 0: Der Vorgang war erfolgreich.
    • Beispielcode:
      Code:
      EnableExplicit

      Define 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)
        Define ExecuteWMIQuery.ExecuteWMIQuery = GetFunction(PBEx_WMI, "ExecuteWMIQuery")
        Prototype ExecuteWMIMethod(Namespace.p-Unicode, Query.p-Unicode, Method.p-Unicode, ParameterArray, ParameterArraySize)
        Define ExecuteWMIMethod.ExecuteWMIMethod = GetFunction(PBEx_WMI, "ExecuteWMIMethod")
        Prototype WaitWMIEvent(Query.p-Unicode, Timeout = 0)
        Define 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

  • ExecuteWMIMethod()
    • Syntax:
      Code:
      Result = ExecuteWMIMethod(Namespace$, Query$, Method$, ParameterArray, ParameterArraySize)

    • Beschreibung: Führt eine Methode aus.
    • Parameter:
      1. Namespace$: Bezeichnung des Namensraums.
      2. Query$: Abfrage der Klasse und optional mit Bedingungen.
      3. Method$: Name der Methode, die ausgeführt werden soll.
      4. ParameterArray: Ein String-Array mit Parametern, die übergeben werden sollen. Parametername und -wert werden mit einem Gleichheitszeichen ohne Leerzeichen getrennt.
      5. ParameterArraySize: Anzahl der Elemente.
    • Rückgabewert:
      • 0: Der Vorgang war erfolgreich.
    • Beispielcode:
      Code:
      EnableExplicit

      Define 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)
        Define ExecuteWMIQuery.ExecuteWMIQuery = GetFunction(PBEx_WMI, "ExecuteWMIQuery")
        Prototype ExecuteWMIMethod(Namespace.p-Unicode, Query.p-Unicode, Method.p-Unicode, ParameterArray, ParameterArraySize)
        Define ExecuteWMIMethod.ExecuteWMIMethod = GetFunction(PBEx_WMI, "ExecuteWMIMethod")
        Prototype WaitWMIEvent(Query.p-Unicode, Timeout = 0)
        Define 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

  • WaitWMIEvent()
    • Syntax:
      Code:
      Result = WaitWMIEvent(Class$, Query$, Timeout = 0)

    • Beschreibung: Wartet auf ein Event.
    • Parameter:
      1. Query$: Abfrage der Klasse und optional mit Bedingungen.
      2. 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:
      EnableExplicit

      Define 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)
        Define ExecuteWMIQuery.ExecuteWMIQuery = GetFunction(PBEx_WMI, "ExecuteWMIQuery")
        Prototype ExecuteWMIMethod(Namespace.p-Unicode, Query.p-Unicode, Method.p-Unicode, ParameterArray, ParameterArraySize)
        Define ExecuteWMIMethod.ExecuteWMIMethod = GetFunction(PBEx_WMI, "ExecuteWMIMethod")
        Prototype WaitWMIEvent(Query.p-Unicode, Timeout = 0)
        Define 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


Systemvoraussetzungen:
  • Windows XP oder höher
  • .NET Framework 3.5 oder höher
  • Unicode-Aktivierung (standardmäßig ab PB 5.50)
Da das benötigte .NET Framework ab Windows 7 standardmäßig vorinstalliert ist und auf XP und Vista installiert werden kann, sollte das kein Problem sein, diese Version zu verwenden.
Es ist keine Assembly-Registrierung mit regasm.exe mit Administratorrechten notwendig wie bei COMatePLUS.

Lizenz: Diese DLL-Datei ist kostenlos und darf ohne Namensnennung und ohne Link zur Homepage sowohl privat als auch kommerziell verwendet werden.

Download: http://www.rsbasic.de/downloads/downloa ... Ex_WMI.zip
Ich würde mich über Feedbacks, Verbesserungsvorschläge, Fehlermeldungen oder Wünsche sehr freuen. Danke :)

_________________
BildBildBildBildBild
Bild | EnableExplicit ist kostenlos und vermeidet Fehler | Gib Goto keine Chance | Schneller als die Telekom erlaubt | Avira? Nein Danke
WinAPI forever | Bei Problemen bitte Beispielcode posten | Mit Adblock werbefrei, schneller und sicherer surfen | brain.exe ist der beste Schutz | Userlibrary ohne Source = NoGo


Nach oben
 Profil  
Mit Zitat antworten  
Beiträge der letzten Zeit anzeigen:  Sortiere nach  
Ein neues Thema erstellen Auf das Thema antworten  [ 1 Beitrag ] 

Alle Zeiten sind UTC + 1 Stunde [ Sommerzeit ]


Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast


Sie dürfen keine neuen Themen in diesem Forum erstellen.
Sie dürfen keine Antworten zu Themen in diesem Forum erstellen.
Sie dürfen Ihre Beiträge in diesem Forum nicht ändern.
Sie dürfen Ihre Beiträge in diesem Forum nicht löschen.

Suche nach:
Gehe zu:  

 


Powered by phpBB © 2008 phpBB Group | Deutsche Übersetzung durch phpBB.de
subSilver+ theme by Canver Software, sponsor Sanal Modifiye