[VBS] Ayuda sobre objeto nuevo (Para mi)

Iniciado por danny920825, 18 Enero 2014, 07:06 AM

0 Miembros y 1 Visitante están viendo este tema.

danny920825

Hola, hace algun tiempo Elektro me posteo un codigo que monitoreaba la conexion y desconexion de cualkier dispositivo USB en el sistema. Por el momento me asuste con el codigo y pense que con el tiempo sabria que dice ahi. Pues el caso es que el tiempo paso y sigo sin saber que dice ahi. El codigo es el siguiente:


Citar
Código (vb) [Seleccionar]
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
   
   Set wmiEvent = objWMIService.ExecNotificationQuery( _
      "Select * From __InstanceCreationEvent Within 1" & _
          " Where TargetInstance ISA 'Win32_PnPEntity'")
   
   While True
      Set objEvent = wmiEvent.NextEvent()
      Set objUSB = objEvent.TargetInstance
      strName = objUSB.Name
      strDeviceID = objUSB.DeviceID
      Set objUSB = Nothing
   
      Set colDrives = objWMIService.ExecQuery( _
          "Select * From Win32_LogicalDisk Where DriveType = 2")
   
      For Each objDrive in colDrives
          strDriveLetter = objDrive.DeviceID
      Next
   
      Set colDrives = Nothing
   
      WScript.Echo strName & " Se ha montado como " & strDriveLetter
   Wend
   
   Set wmiEvent = Nothing
   Set objWMIService = Nothing


si alguien me puede explicar mas sobre ese objeto porque no se mucho ingles como par leer el archivo de ayuda y los traductores no son recomendables en programacion.




[MOD]: Utiliza las etiquetas para insrtar código.
"Los que reniegan de Dios es por desesperación de no encontrarlo".
   Miguel de Unamuno

Eleкtro

#1
Cita de: danny920825 en 18 Enero 2014, 07:06 AM
si alguien me puede explicar mas sobre ese objeto

¿Que es exáctamente lo que no entiendes?, pues hay varias referencias a objetos declarados en ese trozo de código ...aunque todas tienen que ver con WMI.

WMI (Windows Management Instrumentation) es una infraestructura para obtener diversa información del sistema haciendo querys.

Citar
Código (vb) [Seleccionar]
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")

Lo que está entre paréntesis es una expresión para conectar con el namespace del objeto (en este caso .\root\cimv2) donde el punto representa cualquier PC (podría especificarse otro nombre de máquina o dirección), y winmgmts: es un prefijo que nunca cambia.

~> Connecting to WMI Objects
~> Windows Remote Management and WMI

Citar
Código (vb) [Seleccionar]
   Set wmiEvent = objWMIService.ExecNotificationQuery( _
     "Select * From __InstanceCreationEvent Within 1" & _
         " Where TargetInstance ISA 'Win32_PnPEntity'")

Con esa query lo que haces es subscribirte a un evento, pues cuando insertas o extraes un dispositivo sucede un evento en el sistema, y de esta manera se reporta a ti, y la class Win32_PnPEntity representa las propiedades de un dispositivo plug&play.

Por ejemplo, el evento __InstanceCreationEvent ocurre cuando un dispositivo se conecta/crea, __InstanceDeletionEvent cuando un dispositivo de extrae/elimina, y el evento __InstanceModificationEvent cuando un dispositivo se modifica.

~> __InstanceCreationEvent class
~> Win32_PnPEntity class
~> Receiving a WMI Event

Dentro del búcle, el resto de métodos, propiedades del objeto, y querys, creo que són más fáciles de entender sin necesidad de explicaciones, pero si no entiendes algo de ahí entonces requiere más lectura en inglés por tu parte (cosa que ya has dejado clara que no quieres), así que lo dejo aquí.

Saludos!