Pongo a su disposición algunas funciones que he encontrado investigando un poco con WMI, ojala y a alguien le pueda servir, Si alguin más las puede complementar que mejor para que tengamos un mejor conocimiento de las posibilidades que podemos tener con esta tecnología.
- Code: Select all Expand view
#Include "FIVEWIN.CH"
Funcion Main()
LOCAL oDatos
LOCAL nFree:= ""
LOCAL oLoc:= CreateObject( "wbemScripting.SwbemLocator" )
LOCAL objWMI:= oLoc:ConnectServer()
LOCAL oSistema:= objWMI:ExecQuery("Select * from Win32_PhysicalMedia")
LOCAL oDisco:= objWMI:ExecQuery("Select * from Win32_LogicalDisk")
LOCAL oParti:= objWMI:ExecQuery("Select * from CIM_DiskPartition")
LOCAL oDisket:= objWMI:ExecQuery("Select * From Win32_LogicalDisk Where DeviceID = 'A:'")
LOCAL objUnd:= objWMI:ExecQuery("Select * from Win32_MappedLogicalDisk")
LOCAL oUnd:= objWMI:ExecQuery("Select * from Win32_CDROMDrive")
LOCAL oResolu:= objWMI:ExecQuery("Select * from Win32_DesktopMonitor")
LOCAL oSistem:= objWMI:ExecQuery("Select * from Win32_OperatingSystem")
LOCAL oUsers:= objWMI:ExecQuery("Select * from Win32_Account")
LOCAL oServ:= objWMI:ExecQuery("Select * from Win32_Service Where Name = 'Themes'")
LOCAL oTime:= objWMI:ExecQuery("Select * from Win32_LocalTime")
LOCAL oJbs := oSrv:ExecQuery( "SELECT * FROM Win32_BaseBoard" )
FOR Each oDatos In oSistema
MsgInfo("Serial de fabrica: " + ALLTRIM(cValToChar(oDatos:SerialNumber)),"Numero de serie del disco duro")
NEXT
FOR Each oDatos In oDisco
MsgInfo("Unidad: " + ALLTRIM(cValToChar(oDatos:Name)) + "\ Serial: " + ALLTRIM(cValToChar(oDatos:VolumeSerialNumber)),"Unidad y serial lógico de las unidades de disco")
NEXT
FOR Each oDatos in oParti
MsgInfo(ALLTRIM(cValToChar(oDatos:Name)) + " - Tamaño: " +ALLTRIM(cValToChar(oDatos:Size)) + " En: " + ALLTRIM(cValToChar(oDatos:SystemName)) + " - Tipo: " + ALLTRIM(cValToChar(oDatos:TYPE)),"Particiones disponibles")
NEXT
FOR Each oDatos in oDisket
nFree:= oDatos:FreeSpace
IF VALTYPE(nFree) = "U"
MsgInfo("No hay diskete en la unidad A:\","Aviso del WMI de Windows")
ELSE
MsgStop("Hay un diskete en la unidad A:\","Aviso del WMI de Windows")
ENDIF
NEXT
FOR Each oDatos In objUnd
MsgInfo("Device ID: " + oDatos:DeviceID +" Nombre: " + oDatos:Name +" Espacio Libre: " + cValtoChar(oDatos:FreeSpace) + " Tamaño: " + cValtoChar(oDatos:Size),"Lista de unidades Mapeadas en Mi PC")
NEXT
FOR Each oDatos in oUnd
MsgInfo("Unidad: " + oDatos:Drive + " " + "Nombre: " + oDatos:Caption,"Unidades de CD instaladas en el equipo")
NEXT
FOR Each oDatos in oResolu
MsgInfo("Trabajando a Resolución de Alto: " + cValToChar(oDatos:ScreenHeight) + " y Ancho: " + cValToChar(oDatos:ScreenWidth),"Resolucion de Panralla")
NEXT
FOR Each oDatos In oSistem
MsgInfo(oDatos:InstallDate,"Fecha de Instalación de Windows XP")
NEXT
FOR Each oDatos in oSistem
MsgInfo("Directorio de Windows es: " + oDatos:WindowsDirectory +" Directorio del Sistema es: "+ oDatos:SystemDirectory,"Directorio de Windows y del Sistema")
NEXT
FOR Each oDatos in oUsers
MsgInfo(cValToChar(oDatos:Name) + " - " + cValToChar(oDatos:Caption),"Lista de Usuarios de Windows")
NEXT
MsgInfo("Deshabilitarndo los Themes en Windows XP")
FOR Each oDatos in oServ
oDatos:StopService()
SysRefresh()
NEXT
MsgInfo("Habilitando los Themes en Windows XP")
FOR Each oDatos in oServ
oDatos:StartService()
SysRefresh()
NEXT
FOR Each oDatos in oSistem
MsgInfo(oDatos:Caption + " " + oDatos:VERSION,"Sistemas operativos instalados en el PC")
NEXT
FOR Each oDatos in oTime
MsgInfo( "Día: " + cValToChar(oDatos:DAY) + CRLF +;
"Día de la semana: " + cValToChar(oDatos:DayOfWeek) + CRLF +;
"Hora: " + cValToChar(oDatos:Hour) + CRLF +;
"Minutos: " + cValToChar(oDatos:Minute) + CRLF +;
"Mes: " + cValToChar(oDatos:MONTH) + CRLF +;
"Segundos: " + cValToChar(oDatos:Second) + CRLF +;
"Semana en el mes: " + cValToChar(oDatos:WeekInMonth) + CRLF +;
"Año: " + cValToChar(oDatos:YEAR),"Dia, Hora, Mes y Año desde WMI")
NEXT
FOR EACH oDatos IN oJbs
MsgInfo("El Número de Serie de la MotherBoard es: "+Alltrim(cValtoChar(oJob:SerialNumber)),"Desde WMI")
NEXT
Return nil
Un furte Abrazo y Saludos...