Página 1 de 1

Direccion MAC del PC

Publicado: 06 Dic 2012, 15:11
por kotoqu
Hola amigos gusto en saludarlos.

Les cuento que estoy desarrollando un pequeño programa con autoit y la idea es que funcione exclusivamente para cada ordenador en el que se intala. Se me ocurre la idea de vincularlo a la Direccion fisica o MAC para que no se pueda usar en otro ordenador.
El tema es que no conozco la función para que autoit obtenga la direccion mac del equipo.

Si me pudieran ayudar con esto estaría muy agradecido.
Muchas gracias desde ya.

Re: Direccion MAC del PC

Publicado: 06 Dic 2012, 17:41
por kotoqu
Se me ocurrió una sola idea para obtener, comparto el código.

#include <Process.au3>
$rc = _RunDos("getmac > mac.txt") ; Con esto consigo la MAC desde la consola y creo un txt con datos.
$Fline = FileReadLine ("mac.txt",4) ; Con esto consigo la MAC fija.
$MAC = StringLeft ($Fline, 14) ; Recogo los numeros de la MAC.
ClipPut ($MAC) ; Lo guardo en un ClipPut para usarlo luego
Filedelete ("mac.txt") ; Borro el archivo.

If $MAC == "AC-72-89-8B-C8" Then

MsgBox (0,"","MAC Exitosa")

Else
MsgBox (0,"","MAC No Corresponde")

EndIf

; No es muy elegante pero me sacó del apuro.

Re: Direccion MAC del PC

Publicado: 06 Dic 2012, 19:36
por Chefito
Hombre, como primer intento no está mal. Lo que pasa que te has complicado mucho la vida y, como tú bien dices, no es elegante.
Puedes hacer esto mismo pero sin tener que generar un fichero de texto. Puedes guardar en una variable todo lo que te devuelve la consola. Mira el parámetro opt_flag de la función run. Mira la opción $STDOUT_CHILD, que junto con la función StdoutRead tienes todo solucionado (mira el ejemplo de esta última en la ayuda).

También puede utilizar apis de win para obtener la mac, o un objeto WMI. Por ejemplo, un código que te hace ésto lo puedes encontrar aquí: http://www.autoitscript.com/forum/topic ... try1023328

Y puedes utilizar una función de este código para sacar el texto resultante del comando getmac (para que hacer lo que ya está hecho :smt002 ):

Código: Seleccionar todo

#include <Constants.au3>

MsgBox(0, "", _RunStdOutRead("getmac"))

Func _RunStdOutRead($sCommand, $sWorkingDirectory = @SystemDir)
     Local $iPID = Run(@ComSpec & ' /c ' & $sCommand, $sWorkingDirectory, @SW_HIDE, $STDOUT_CHILD + $STDERR_CHILD), $sOutput = ''
     While 1
          $sOutput &= StdoutRead($iPID)
          If @error Then
               ExitLoop
          EndIf
     WEnd
     Return $sOutput
EndFunc   ;==>_RunStdOutRead
Tendrías que tratar el texto que te devuelve la función, pero eso es fácil.

Saludos.

Re: Direccion MAC del PC

Publicado: 07 Dic 2012, 04:28
por kotoqu
Gracias Chefito. Eres un TOP.