Newsgroup: it.comp.lang.visual-basic
Titolo: [VB6] WMI Scripting Library

Sono ore che cerco ma non ho ancora trovato nulla.
Qualcuno ha da passarmi dei link di esempi di utilizzo della WMI in
early-binding?
S�, lo so che l'ambito di elezione � il vbscript, ma quando si
spippola....
Grazie in anticipo



Intendi una cosa del genere?
Io la uso in una routine per enumerare le seiali anche virtuali (USB)
___________________
Dim WMIService As Object
Dim Items As Variant, Subitems As Variant, T$
    Set WMIService = GetObject("winmgmts:\\.\root\cimv2")
    Set Items = WMIService.ExecQuery("Select * from Win32_PnPEntity", , 48)
    For Each Subitems In Items
        If InStr(Subitems.Caption, "COM") > 0 Then
          If Mid$(Subitems.Caption, InStr(Subitems.Caption, "COM") + 5, 1) <>
")" Then
           T$ = Mid$(Subitems.Caption, InStr(Subitems.Caption, "COM"), 4)
          Else
           T$ = Mid$(Subitems.Caption, InStr(Subitems.Caption, "COM"), 5)
          End If
 
          For i = 0 To ComSel.ListCount
           If ComSel.List(i) = T$ Then ComSel.List(i) = Subitems.Caption
          Next
        End If
    Next
______________________
--
ciao
  Stefano



Non precisamente (di fatto il tuo � un approccio *late-bounded*).
Ma spiego meglio il punto. Avevo iniziato a  fare una libreria che
facesse da *simil-wrapper* al WMI (che � a sua volta un wrapper per le
classi CMI), almeno per le cose che ritenevo pi� utili.
Avevo scelto di referenziare esplicitamente la Windows Scripting
Library per accedere direttamente a propriet� e metodi, senza
utilizzare l'approccio *a query*, e deciso di
creare classi specifiche da sovrapporre alle classi WMI
(win32_process, win32_NetworkAdapter ecc) con relative classi
collection.
Ora, finch� si tratta di propriet� � tutto semplice (anche se un po'
noioso). L'asino casca quando devo implementarci i metodi.
Non trovavo infatti nessun esempio relativo a questo approccio.
A notte fonda, poi ho trovato qualcosa nell'SDK:
'Esegue il metodo Create
Dim process As SWbemObject
Dim method As SWbemMethod
Dim inParam As SWbemObject
Dim outParam As SWbemObject
Set process
=GetObject("winmgmts:{impersonationLevel=impersonate}!Win32_Process")
    Set method = process.Methods_("Create")
    Set inParam = method.inParameters.SpawnInstance_()
    inParam.CommandLine = "calc.exe"
    Set outParam = process.ExecMethod_("Create", inParam)
    If outParam.returnValue = 0 Then
        MsgBox ("Method executed successfully")
    Else
      MsgBox ("Method failed")
    End If
(Ovviamente nell'esempio specifico  lanciare un processo in *VB* in
questo modo � puro onanismo....)
Per quanto riguarda il Terminate non avevo trovato esempi, ne' sono
riuscito a implementarlo sulla falsa riga dell'esempio riportato (va
detto che ero al limite del collasso nervoso).
Riprover� con pi� calma,anche se ho l'impressione di dover
riconsiderare l'architettura del progetto, utilizzando magari il pi�
semplice approccio a query.
Ciao

semplice approccio a query.
La cosa si fa un p� troppo complicata per me e forse ti pu� aiutare Raf, adesso
� verde su Skype, magari pi� tardi fa un giro sul ng.
--
ciao
  Stefano


Chiamato?
Dico subito che non ho mai utilizzato il WMI in early-binding, quelle 
(poche) volte che mi � servito ho usato lo stesso approccio late-binding che 
hai suggerito tu.
Ci� premesso, piuttosto che le WMI io wrapperei le API Win32 (OpenProcess, 
CreateProcess, TerminateProcess etc etc...), poi magari Raimbaut ha altri 
motivi che lo spingono in quella direzione...
Ciao
Raf

motivi che lo spingono in quella direzione...
Anch'io le poche volte che ho dovuto usare i processi ho sempre usato le API, 
soprattutto la SetPriorityClass.
--
ciao
  Stefano

motivi che lo spingono in quella direzione...
Beh, quella dei processi era solo l' esempio che avevo trovato . In
realt� cercavo esempi di codice che mi aiutassero a capire in generale
come implementare i metodi WMI in early-binding.
Le varie classi le creo automaticamente con delle routines che mi sono
fatto, per cui le ho gi� belle e pronte con  tutte le loro propriet�.
Volevo solo provare a completarle aggiungendovi quei (pochi) metodi
gestiti dal WMI, ma da quel che ho trovato fino ad ora, mi sembra di
comunque capire che sia cosa un tantino cervellotica se si vuole
utilizzare l'approccio a cui ho fatto riferimento.
Per quanto riguarda poi l'utilit� pratica, anch'io ho sempre usato il
WMI solo in alcuni casi, ma tant'� che spippolando s'impara.
Ovvio che se poi devi perderci la testa......
Ciao