7 de noviembre de 2016

Obtener la dirección MAC (Mac Address)

Como obtener la dirección MAC (dirección de la tarjeta Ethernet) ...

Uso:

direccion = MacAddress()
FUNCTION MacAddress
Local pGUID,rGUID,lnSize
Declare integer CoCreateGuid in 'OLE32.dll' ;
  string @pguid
Declare integer StringFromGUID2 in 'OLE32.dll' ;
  string rguid, string @lpsz, integer cchMax
pGUID=replicate(chr(0),16)
rGUID=replicate(chr(0),80)

If "5." $ OS() && 2000/XP
  Declare integer UuidCreateSequential in 'RPCRT4.dll'  string @ Uuid
  Return substr( iif( UuidCreateSequential(@pGUID) = 0 ;
    and StringFromGUID2(pGUID,@rGUID,40) # 0, ;
    StrConv(left(rGUID,76),6), "" ), 26,12)
Else
  Return substr( iif( CoCreateGuid(@pGUID) = 0 ;
    and StringFromGUID2(pGUID,@rGUID,40) # 0, ;
    StrConv(left(rGUID,76),6), "" ), 26,12)
Endif
Cetin Basoz

3 comentarios :

  1. Cada vez que ejecuto la rutina, la direccion resultante es distinta.
    ¿Es correcto?

    ResponderEliminar
  2. Algo no anda bien con la funcion, no es posible que el Mac Address cambie cada vez que se ejecute.

    ResponderEliminar
  3. Este codigo funciona correctamente, solo que te retorna todas las tarjetas de red que tiene el equipo.

    Fuente: http://www.tek-tips.com/viewthread.cfm?qid=756938

    *!* Let's get the MAC Address(es)
    LOCAL lcComputerName, loWMIService, loItems, loItem, lcMACAddress
    lcComputerName = "."
    loWMIService = GETOBJECT("winmgmts:\\" + lcComputerName + "\root\cimv2")
    loItems = loWMIService.ExecQuery("Select * from Win32_NetworkAdapter",,48)
    FOR EACH loItem IN loItems
    lcMACAddress = loItem.MACAddress
    IF !ISNULL(lcMACAddress)
    ? "MAC Address: " + loItem.MACAddress
    ?
    ENDIF
    ENDFOR

    ResponderEliminar

Los comentarios son moderados, por lo que pueden demorar varias horas para su publicación.