hi,
wie kann man die mac adresse auslesen?
kurzer post egal
mac adresse
-
p3aNut -
4. August 2006 um 23:17 -
Geschlossen -
Erledigt
-
-
Quick & Dirty: (engl. Forum)
C
Alles anzeigen#include <array.au3> #include <file.au3> $filename = "C:\ipconfig.txt" RunWait(@ComSpec & " /c ipconfig /all > " & $filename , "", @SW_HIDE) Dim $array _FileReadToArray($filename,$array) $text = _ArrayToString($array,";") $macs = StringRegExp($text,":\s((?:\A\A-){5}\A\A);",3) _ArrayDisplay($macs,"MAC Addrs") FileDelete($filename)
-
thx dude works perfekt
achja wie bekomm ich das denn in eine variable rein?
ich kenn mich mit arryas nicht so gut aus
mit _ArrayToString schaff ichs nicht er zeigt nur leer an -
- Offizieller Beitrag
Hier ein Beispiel wie man die Infos vom Netzwerkadapter mit WMI ausliest, erstellt mit Scriptomatic:
Spoiler anzeigen
Code
Alles anzeigen; Erstellt von AutoIt Scriptomatic $wbemFlagReturnImmediately=0x10 $wbemFlagForwardOnly=0x20 $colItems="" $strComputer="localhost" $Output="" $Output&="Computer: " &$strComputer & @CRLF $Output&="==========================================" & @CRLF $objWMIService=ObjGet("winmgmts:\\" &$strComputer &"\root\CIMV2") $colItems=$objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter " & _ "WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> " & _ "'Microsoft'))", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If IsObj($colItems) Then For $objItem In $colItems $Output&="AdapterType: " &$objItem.AdapterType & @CRLF $Output&="AdapterTypeId: " &$objItem.AdapterTypeId & @CRLF $Output&="AutoSense: " &$objItem.AutoSense & @CRLF $Output&="Availability: " &$objItem.Availability & @CRLF $Output&="Caption: " &$objItem.Caption & @CRLF $Output&="ConfigManagerErrorCode: " &$objItem.ConfigManagerErrorCode & @CRLF $Output&="ConfigManagerUserConfig: " &$objItem.ConfigManagerUserConfig & @CRLF $Output&="CreationClassName: " &$objItem.CreationClassName & @CRLF $Output&="Description: " &$objItem.Description & @CRLF $Output&="DeviceID: " &$objItem.DeviceID & @CRLF $Output&="ErrorCleared: " &$objItem.ErrorCleared & @CRLF $Output&="ErrorDescription: " &$objItem.ErrorDescription & @CRLF $Output&="Index: " &$objItem.Index & @CRLF $Output&="InstallDate: " & WMIDateStringToDate($objItem.InstallDate) & @CRLF $Output&="Installed: " &$objItem.Installed & @CRLF $Output&="LastErrorCode: " &$objItem.LastErrorCode & @CRLF $Output&="MACAddress: " &$objItem.MACAddress & @CRLF $Output&="Manufacturer: " &$objItem.Manufacturer & @CRLF $Output&="MaxNumberControlled: " &$objItem.MaxNumberControlled & @CRLF $Output&="MaxSpeed: " &$objItem.MaxSpeed & @CRLF $Output&="Name: " &$objItem.Name & @CRLF $Output&="NetConnectionID: " &$objItem.NetConnectionID & @CRLF $Output&="NetConnectionStatus: " &$objItem.NetConnectionStatus & @CRLF $strNetworkAddresses=$objItem.NetworkAddresses(0) $Output&="NetworkAddresses: " &$strNetworkAddresses & @CRLF $Output&="PermanentAddress: " &$objItem.PermanentAddress & @CRLF $Output&="PNPDeviceID: " &$objItem.PNPDeviceID & @CRLF $strPowerManagementCapabilities=$objItem.PowerManagementCapabilities(0) $Output&="PowerManagementCapabilities: " &$strPowerManagementCapabilities & @CRLF $Output&="PowerManagementSupported: " &$objItem.PowerManagementSupported & @CRLF $Output&="ProductName: " &$objItem.ProductName & @CRLF $Output&="ServiceName: " &$objItem.ServiceName & @CRLF $Output&="Speed: " &$objItem.Speed & @CRLF $Output&="Status: " &$objItem.Status & @CRLF $Output&="StatusInfo: " &$objItem.StatusInfo & @CRLF $Output&="SystemCreationClassName: " &$objItem.SystemCreationClassName & @CRLF $Output&="SystemName: " &$objItem.SystemName & @CRLF $Output&="TimeOfLastReset: " & WMIDateStringToDate($objItem.TimeOfLastReset) & @CRLF If Msgbox(1, "WMI-Ausgabe", $Output)=2 then ExitLoop $Output="" Next Else Msgbox(0, "WMI-Ausgabe","Keine WMI-Objekte gefunden für Klasse: " & "Win32_NetworkAdapter") Endif Func WMIDateStringToDate($dtmDate) Return (StringMid($dtmDate, 5, 2) &"/" &StringMid($dtmDate, 7, 2) &"/" &StringLeft($dtmDate, 4) & " " &StringMid($dtmDate, 9, 2) &":" &StringMid($dtmDate, 11, 2) &":" &StringMid($dtmDate,13, 2)) EndFunc
und Hier die Umsetzung als Funktion zum auslesen der MAC-Adressen von aktiven Netzadaptern:
Spoiler anzeigen
Code
Alles anzeigen$MACAdressen = _GetMACAdresses() ; optional kann noch der Rechnername oder IP-Adresse eines PC angegeben werden If @error Then ; Wenn @error <> 0 ist, ist ein Fehler aufgetreten MsgBox(0,"", "Keine aktive Netzwerkkarte!") Exit EndIf For $i = 1 To $MACAdressen[0] ; $MACAdressen[0] enthält die Anzahl der MACAdressen (aktive Netzwerkkarten) MsgBox(0,"MACAdresse " & $i, $MACAdressen[$i]) ; $MACAdressen[1] bis §MACAdressen[n] enthält die Adressen Next ;=============================================================================== ; ; Description: Gibt die MAC-Adressen aller aktiven Netzadapter zurück ; Parameter(s): (optional) Rechnername oder IP-Adresse des Computers ; Requirement(s): keine ; Return Value(s): bei Erfolg: Array{0] = Anzahl der Netzadapter ; Array[1] = MAC-Adresse von Adapter 1 ; Array[2] = MAC-Adresse von Adapter 2 ; : : : ; Array[n] = MAC-Adresse von Adapter n ; bei Fehler: Leerstring und @error = 1 ; Author(s): bernd670 ; ;=============================================================================== Func _GetMacAdresses($strComputer="localhost") Local Const $wbemFlagReturnImmediately=0x10 Local Const $wbemFlagForwardOnly=0x20 Local $colItems="", $MACS[2] $objWMIService=ObjGet("winmgmts:\\" &$strComputer &"\root\CIMV2") $colItems=$objWMIService.ExecQuery("SELECT * FROM Win32_NetworkAdapter " & _ "WHERE ((MACAddress Is Not NULL) AND (Manufacturer <> " & _ "'Microsoft'))", "WQL", $wbemFlagReturnImmediately + $wbemFlagForwardOnly) If IsObj($colItems) Then $MACS[0] = 0 For $objItem In $colItems $MACS[0] += 1 If UBound($MACS) = $MACS[0] Then ReDim $MACS[$MACS[0]+1] $MACS[$MACS[0]] = $objItem.MACAddress Next SetError(0) Return $MACS Else SetError(1) Return "" Endif EndFunc
-
bernd, dein script is mir viel zu kompliziert
C
Alles anzeigen#include <array.au3> #include <file.au3> $filename = @TempDir & "/~3ip.tmp" RunWait(@ComSpec & " /c ipconfig /all > " & $filename , "", @SW_HIDE) Dim $array _FileReadToArray($filename,$array) $text = _ArrayToString($array,";") $macs = StringRegExp($text,":\s((?:\A\A-){5}\A\A);",3) _ArrayDisplay($macs,"MAC Addrs") FileDelete($filename) Dim $sArrayString = _ArrayToString( $macs,@TAB,-1,-1) MsgBox( 4096, "Test", $sArrayString )
so hab ich es jetzt, aber bei der letzen msg box zeigt er einfach ncihts an, wieso ?
-
- Offizieller Beitrag
-
Dim $sArrayString = _ArrayToString( $macs," ")
auch so gibt er mir nur gähnende leere aus -
- Offizieller Beitrag
Deine erste Version geht bei mir problemlos.
Führst du mit der Beta-Version aus?
Kann sein, dass da die Funktion _ArrayToString gefixt wurde...peethebee
-
hm...beta hab ich, in dem beta ordner halt drinne, aber zb die funktion _ispressed geht bei mir und die steht nur in der beta drinnen
-
- Offizieller Beitrag
In Scite ALt+F5?
peethebee
-
- Offizieller Beitrag
_ArrayToString hat Probleme wenn das Array nur 1 Element besitzt.
-
mir ist gerade aufgefallen das scite immer c/programm files benütze, da ich diesen odenr nicht habe kann er die autoit beta eignetlich nicht finden oO
wo kann man denn diese pfade änden?edit: ok das hab ich gefunden, aber es geht trotzdem nicht mit beta compile
edit2: aso na dann, versuch ich mal einfach etwas zum array dazu zu geben
edit3: ok jetzt geht es hab einfach etwas zum array dazu gegebn uns jetzt kann ich es in einen string machen danke bernd