Что нового

Опредиление мак адреса сетевой карты

chymax3m

Новичок
Сообщения
26
Репутация
1
Версия AutoIt: 3.3.6.1

Описание: Програма должна опредилять мак адрес сетевой карты забивать его в буфер обмена, наверное, и при необходимости симуляцией нажатия Ctrl+V вставлять в заранее открытый блокнот.
Спасибо

Примечания:
 

ynbIpb

Скриптер
Сообщения
399
Репутация
110
Пример с англ. форума
Код:
MsgBox (0, "", _GetMAC ())

Func _GetMAC($getmacindex = 1)
    $ipHandle = Run(@ComSpec & ' /c ipconfig /all', '', @SW_HIDE, 2)
	$read = ""
	Do
		$read &= StdoutRead($ipHandle)
	Until @error
	
	$read = StringStripWS($read,7)
	
    $macdashed = StringRegExp( $read , '([0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2}-[0-9A-F]{2})', 3)
    If Not IsArray($macdashed) Then Return 0
    If $getmacindex <  1 Then Return 0
    If $getmacindex > UBound($macdashed) Or $getmacindex = -1 Then $getmacindex = UBound($macdashed)
    $macnosemicolon = StringReplace($macdashed[$getmacindex - 1], '-', ':', 0)
    Return $macnosemicolon 
EndFunc;==>_GetMAC
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
chymax3m
Еще так можно.
Код:
$s_Read = ''
$i_PID = Run(@ComSpec & ' /C getmac /s localhost', '', @SW_HIDE, 6)
While 1
	$s_Read &= StdoutRead($i_PID)
	If @error Then ExitLoop
	Sleep(1)
WEnd
$a_Mac = StringRegExp($s_Read, '(?im)^([\da-f-]{5,})\s', 3)
If @error Then
	ConsoleWrite('Error' & @LF)
Else
	For $i = 0 To UBound($a_Mac) - 1
		ConsoleWrite($i + 1 & @TAB & $a_Mac[$i] & @LF)
	Next
EndIf
 
Автор
C

chymax3m

Новичок
Сообщения
26
Репутация
1
Спасибо, уже попробовал первый вариант, догодался как потом заставить программу печатать мак адрес в блокнот, но есть еще некоторые вопросы: как прописать очистку буфера обмена?
 
Автор
C

chymax3m

Новичок
Сообщения
26
Репутация
1
Vovsla Спасибо, уловил.

ynbIpb Стоить отметить, что если надо вывести мак-адрес в формате ХХ-ХХ-ХХ-ХХ-ХХ-ХХ то в первом варианте надо заменить ":" на "-".
 
Верх