Hola Sergio, ojala te de un norte el siguiente codigo:
Static Function GetUSBSerial( cDrive )
Local oJob
Local cDriveNumber
Local oJobs := oWMI:Win32_LDP
//
cDrive := Upper(cDrive)
If Len( cDrive ) == 1
cDrive += ":"
EndIf
If Len(cDrive) > 2
cDrive := SubStr(cDrive,1,2)
EndIf
For Each oJob In oJobs
If cDrive == __StrToken( oJob:Dependent, 2, '"' )
cDriveNumber = SubStr( __StrToken( __StrToken( oJob:Antecedent, 2,
'"' ), 1, "," ), 7 )
oWMI:cDriveNumber := cDriveNumber
Return GetSerial( cDriveNumber )
EndIf
Next
Return ""
Static Function GetSerial( cDriveNumber )
Local oDrive
Local cSerial:= ""
Local aDrives:= oWMI:Win32_DD
//
For Each oDrive In aDrives
If oDrive:Name == ".PHYSICALDRIVE" + cDriveNumber .and.
oDrive:InterfaceType == "USB"
cSerial := oDrive:PNPDeviceID
cSerial := SubStr( cSerial, 1, Rat( "&", cSerial ) - 1 )
cSerial := SubStr( cSerial, Rat( "&", cSerial ) + 1 )
If At( "", cSerial ) != 0
cSerial = SubStr( cSerial, At( "", cSerial ) + 1 )
EndIf
Return cSerial
EndIF
Next
Saludos Cordiales.
"Sergio Garcia Luna" <meridiano74[at]prodigy[dot]net[dot]mx> escribis en el
mensaje news:5294f2c8$[email=1@svctag-j7w3v3j....]1@svctag-j7w3v3j....[/email]
> Gracias Juanc.
>
> Intento lo siguiente, pero el valor que busco
> (oTemp:SerialNumber ) me regresa NIl en todos los casos
> y no tango la menor idea de por que. Te agradecerma si me
> puedes orientar.
>
> Tambien vi esto en Internet, pero no se como introducirlo: ("SELECT * FROM
> Win32_DiskDrive WHERE
> InterfaceType='USB'");
>
>
> METHOD Button1Click( oSender ) CLASS TForm1
>
> LOCAL oTemp
>
> ::oServer := CreateObject( "wbemScripting.SwbemLocator"
> )
> ::oWMI := ::oServer:ConnectServer()
> ::oDrives := ::oWMI:ExecQuery( "SELECT * FROM
> Win32_PhysicalMedia" )
> ::oBoard := ::oWMI:ExecQuery( "SELECT * FROM
> Win32_BaseBoard" )
> ::oBios := ::oWMI:ExecQuery( "SELECT * FROM Win32_BIOS"
> )
>
> altd()
> FOR EACH oTemp IN ::oDrives
> MsgInfo( "Serie del disco: " + Str( oTemp:SerialNumber
> ) )
> NEXT
>
> FOR EACH oTemp IN ::oBoard
> MsgInfo( "Serie de la placa: " + Str(
> oTemp:SerialNumber ) )
> NEXT
>
> FOR EACH oTemp IN ::oBios
> MsgInfo( "Serie de la BIOS: " + Str( oTemp:SerialNumber
> ) )
> NEXT
>
> RETURN Nil
> --
> Saludos amigos.
---
Este mensaje no contiene virus ni malware porque la protección de avast! Antivirus está activa.
http://www.avast.com