Funktionieren tut das ja, ich meinte aber ob man das evtl. so ansprechen kann
$array[1][1] $array[2][1]
$array[1][2] $array[2][2]
$array[1][3] $array[2][3]
$... $...
Gruß
Funktionieren tut das ja, ich meinte aber ob man das evtl. so ansprechen kann
$array[1][1] $array[2][1]
$array[1][2] $array[2][2]
$array[1][3] $array[2][3]
$... $...
Gruß
Nein,
wenn Du mehr als ein Zweidimensionales Array (also ein Dreidimensionales oder mehr) ansprechen willst, sieht das so aus:
$array[x][y][z]
Wie wäre denn der Aufruf wenn ich aus deiner Funktion Name, IP, MAC rausholen will? Welche Felder müsst ich da anhauen?
Das ist doch ganz einfach!
Ich habe die Funktion nochmals etwas umgeschrieben, damit die IP-Adressen zuletzt im Array erscheinen.
Dies deshalb, weil man nicht weiss, wieviele IP-Adressen vergeben wurden!!
Hier die neue Funktion.
Bei den MsgBox'es am Anfang, kannst Du schön erkennen, wie man die einzelnen Arrayelemente anspricht.
$array[Zeilenummer][Spaltennummer]
[/autoit]Im Kommentar meiner Funktion siehst Du, in welcher Zeilen/Spaltenkombination welche Information steht!
#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]Global $Info = _GetNetworkInformations()
Global $NumberOfAdapters = @extended
Global $sTitle = "Index "
For $i = 1 To $NumberOfAdapters
$sTitle &= "| Adapter " & $i
Next
_ArrayDisplay($Info, "Network Informations", -1, 0, "", "", $sTitle)
For $Adapter = 0 To UBound($Info, 2) - 1
MsgBox(64, "Beschreibung von Adapter " & $Adapter + 1, $Info[0][0])
MsgBox(64, "MAC von Adapter " & $Adapter + 1, $Info[1][0])
MsgBox(64, "DHCP von Adapter " & $Adapter + 1, $Info[2][0])
MsgBox(64, "IP (DHCP) von Adapter " & $Adapter + 1, $Info[3][0])
For $i = 4 To UBound($Info) - 1
MsgBox(64, "IP " & $i -3 & " von Adapter " & $Adapter + 1, $Info[4][0])
Next
Next
;==================================================================================
; Function: _GetNetworkInformations()
; Description: Returns an array with some informations about all network cards
; Parameter(s): -
;
; Return Value(s): On Success: Return Array
; Column 0 Column 1 Column 2...
; Index 0 : Network Card Description
; Index 1 : MAC Address
; Index 2 : DHCP Enabled?
; Index 3 : IP of DHCP Server
; Index 4 : IP-Address 1
; Index 5 : IP-Address 2
; Index n : IP-Address n
;
; @Extended = Number of Adapters found
;
; On Failure: Sets @ERROR to none zero
; Author(s): Veronesi
; Note(s):
;==================================================================================
#include-once
[/autoit] [autoit][/autoit] [autoit]Func _GetNetworkInformations()
[/autoit] [autoit][/autoit] [autoit]Local $oWMI = ObjGet("Winmgmts:\\.\root\cimv2")
If Not IsObj($oWMI) Or @error Then Return SetError(1, 1, 0)
Local $oInstances = $oWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE")
Local $aNetworkAdapter[1][1], $aIP, $Row = 0, $Column = 0
For $oInstance In $oInstances
With $oInstance
ReDim $aNetworkAdapter[$Row + 1][$Column + 1]
$aNetworkAdapter[$Row][$Column] = .Description
$Row += 1
ReDim $aNetworkAdapter[$Row + 3][$Column + 1]
$aNetworkAdapter[$Row][$Column] = .MACAddress
$aNetworkAdapter[$Row + 1][$Column] = .DHCPEnabled
$aNetworkAdapter[$Row + 2][$Column] = .DHCPServer
$Row += 3
$aIP = .IPAddress
For $i = 0 To UBound($aIP) - 1
ReDim $aNetworkAdapter[$Row + 1][$Column + 1]
$aNetworkAdapter[$Row][$Column] = $aIP[$i]
$Row += 1
Next
$Column += 1
EndWith
Next
$oInstance = 0
$oInstances = 0
$oWMI = 0
Return SetError(0, $Column, $aNetworkAdapter)
EndFunc ;==>_GetNetworkInformations
Gruss Veronesi
Der Source fehlt!
Gruß
Danke
Mach mal refresh.... habe es schon korrigiert
Bei mir haut er aus deinem Beispiel immer nur die erste Netzwerkkarte raus .. Und nicht alle, ist da noch was falsch? *g*
Am Anfang wird ja das Array (mit _ArrayDisplay) angezeigt.
Ändere diese Zeile mal in
_ArrayDisplay($Info)
[/autoit]
Damit sicher keine Zeile bei der Anzeige abgeschnitten wird.
Zeigt er dann dort alle Netzwerkkarten an, oder nicht?
Wenn nicht, dann muss es irgendwo an der Funktion liegen. Aber ich habe keine Ahnung wie man mit WMI die anderen Netzwerkkarten auch noch ansprechen könnte.
Ich meinte, dass er so alle bringen sollte....
Doch Doch, im Array zeigt er alle Netzwerkkarten an, nur später wenn er die MsgBox'n durchläuft, zeigt er immer nur den einen Adapter an ...
Naja, das kommt davon, wenn man es nicht richtig testet.
Da waren noch einige Fehler drinnen.
Nun die neue Version.
Funktioniert das?????
#include <Array.au3>
[/autoit] [autoit][/autoit] [autoit]Global $Info = _GetNetworkInformations()
Global $NumberOfAdapters = @extended
Global $sTitle = "Index "
For $i = 1 To $NumberOfAdapters
$sTitle &= "| Adapter " & $i
Next
_ArrayDisplay($Info, "Network Informations", -1, 0, "", "", $sTitle)
For $Adapter = 0 To UBound($Info, 2) - 2
MsgBox(64, "Beschreibung von Adapter " & $Adapter + 1, $Info[1][$Adapter])
MsgBox(64, "MAC von Adapter " & $Adapter + 1, $Info[2][$Adapter])
MsgBox(64, "DHCP von Adapter " & $Adapter + 1, $Info[3][$Adapter])
MsgBox(64, "IP (DHCP) von Adapter " & $Adapter + 1, $Info[4][$Adapter])
For $i = 5 To $Info[0][$Adapter]
MsgBox(64, "IP " & $i - 4 & " von Adapter " & $Adapter + 1, $Info[$i][$Adapter])
Next
Next
;==================================================================================
; Function: _GetNetworkInformations()
; Description: Returns an array with some informations about all network cards
; Parameter(s): -
;
; Return Value(s): On Success: Return Array
; Column 0 Column 1 Column 2...
; Index 0 : Number of Indexes in this column
; Index 1 : Network Card Description
; Index 2 : MAC Address
; Index 3 : DHCP Enabled?
; Index 4 : IP of DHCP Server
; Index 5 : IP-Address 1
; Index 6 : IP-Address 2
; Index n : IP-Address n
;
; @Extended = Number of Adapters found
;
; On Failure: Sets @ERROR to none zero
; Author(s): Veronesi
; Note(s):
;==================================================================================
#include-once
[/autoit] [autoit][/autoit] [autoit]Func _GetNetworkInformations()
[/autoit] [autoit][/autoit] [autoit]Local $oWMI = ObjGet("Winmgmts:\\.\root\cimv2")
If Not IsObj($oWMI) Or @error Then Return SetError(1, 1, 0)
Local $oInstances = $oWMI.ExecQuery("SELECT * FROM Win32_NetworkAdapterConfiguration WHERE IPEnabled=TRUE")
Local $aNetworkAdapter[1][1], $aIP, $Row = 1, $Column = 0, $MaxRow = 0
For $oInstance In $oInstances
With $oInstance
$Row = 1
ReDim $aNetworkAdapter[100][$Column + 1]
$aNetworkAdapter[$Row][$Column] = .Description
$Row += 1
ReDim $aNetworkAdapter[100][$Column + 1]
$aNetworkAdapter[$Row][$Column] = .MACAddress
$aNetworkAdapter[$Row + 1][$Column] = .DHCPEnabled
$aNetworkAdapter[$Row + 2][$Column] = .DHCPServer
$Row += 3
$aIP = .IPAddress
For $i = 0 To UBound($aIP) - 1
ReDim $aNetworkAdapter[100][$Column + 1]
$aNetworkAdapter[$Row][$Column] = $aIP[$i]
$Row += 1
Next
If $MaxRow < $Row Then $MaxRow = $Row
$aNetworkAdapter[0][$Column] = $Row - 1
$Column += 1
EndWith
Next
ReDim $aNetworkAdapter[$MaxRow][$Column + 1]
$oInstance = 0
$oInstances = 0
$oWMI = 0
Return SetError(0, $Column, $aNetworkAdapter)
EndFunc ;==>_GetNetworkInformations
Gruss Veronesi
Kleine Korrektur... bitte nochmals laden