[R] Récupération information des cartes réseaux

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Pharadius
Niveau 1
Niveau 1
Messages : 2
Enregistré le : mer. 20 oct. 2021 10:58
Status : Hors ligne

[R] Récupération information des cartes réseaux

#1

Message par Pharadius »

Bonjour,

Le but de mon utilitaire est récupéré des informations des cartes réseau présent sur le PC afin de nous communiquer plus rapidement.

Mon code fonctionne, mais il est en manuel et je n'arrive pas à l'automatiser.
Je nomme manuellement les cartes réseau possible, mais comment je peux faire sur une carte réseau inconnu ?
Si quelqu'un peut m'aider ou me dire quelle fonction utilisée, car là, je pêche.

Merci d'avoir pris le temps de regarder. :D


#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=C:\Program Files (x86)\AutoIt3\Icons\support2.ico
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Res_Icon_Add=C:\Users\fparadis\Documents\AutoIT\Projet\actu.ico
#include <Array.au3>
#Include "network.au3"
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>

#include <ListViewConstants.au3>
#include <GuiListView.au3>

;~ Copier les sources dans le dossier c:\temp
FileInstall ("C:\Program Files (x86)\AutoIt3\Icons\actu.ico","C:\Temp\")

#Region ### START Koda GUI section ### Form=C:\Users\fparadis\Documents\AutoIT\Projet\Form2.kxf
Global $Form1 = GUICreate("IT SUPPORT", 615, 378, 192, 124)
GUICtrlSetFont(-1, 10, 400, 0, "Segoe UI Black")
GUISetBkColor(0xFFFFFF)
Global $ListView1 = GUICtrlCreateListView("Carte Réseau|AdresseIP|AdresseGW|AdresseMAC", 90, 150, 440, 100)
GUICtrlSetFont(-1, 8, 400, 0, "Segoe UI Black")
Global $LabelNOM = GUICtrlCreateLabel("Nom du PC : " & @ComputerName, 92, 264, 188, 25)
GUICtrlSetFont(-1, 10, 400, 0, "Segoe UI Black")
Global $LabelOS = GUICtrlCreateLabel("", 350, 264, 250, 25)
GUICtrlSetFont(-1, 10, 400, 0, "Segoe UI Black")
Global $LabelHelpme = _GuiCtrlCreateHyperlink("https://www.google.fr", 92, 296, 250, 25)
GUICtrlSetFont(-1, 10, 400, 0, "Segoe UI Black")
Global $LabelMail = _GuiCtrlCreateHyperlink("https://www.google.fr", 92, 328, 200, 25)
GUICtrlSetFont(-1, 10, 400, 0, "Segoe UI Black")
Global $LabelAssist = _GuiCtrlCreateHyperlink("https://www.google.fr", 350, 296, 200, 25)
GUICtrlSetFont(-1, 10, 400, 0, "Segoe UI Black")
Global $Label7 = GUICtrlCreateLabel("Tel : +332.51.45.48.88", 350, 328, 200, 25)
GUICtrlSetFont(-1, 10, 400, 0, "Segoe UI Black")
Global $Button5 = GUICtrlCreateButton("", 552, 180, 41, 41, $BS_ICON)
GUICtrlSetImage(-1, "C:\Temp\actu.ico")
$Pic1 = GUICtrlCreatePic("C:\Program Files (x86)\AutoIt3\Icons\SeproHelpme.jpg", 184, 5, 252, 150)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###

Opt("GUICoordMode", 2)

;~ Récupération de la version Windows
$OS = RegRead("HKLM64\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ProductName")
$Version = RegRead("HKLM64\SOFTWARE\Microsoft\Windows NT\CurrentVersion", "ReleaseId")

;~ Met a jour le champs pour l'OS
GUICtrlSetData ($LabelOS, $OS & " Version : " & $Version)

_carteReseau()


While 1
 $nMsg = GUIGetMsg()
 Switch $nMsg
    Case $GUI_EVENT_CLOSE
      FileDelete("C:\Temp\actu.ico")
      Exit
    Case $LabelHelpme
       ShellExecute ("https://www.google.fr")
    Case $LabelMail
       ShellExecute ("https://www.google.fr")
    Case $Button5
;~        Actulise le Tableau
       _GUICtrlListView_DeleteAllItems($ListView1)
       _carteReseau()
    Case $LabelAssist
       ShellExecute ("https://www.google.fr/")


 EndSwitch
WEnd

Func _GuiCtrlCreateHyperlink($S_TEXT, $I_LEFT, $I_TOP, _
        $I_WIDTH = -1, $I_HEIGHT = -1, $I_COLOR = 0x0000ff, $S_TOOLTIP = '', $I_STYLE = -1, $I_EXSTYLE = -1)
    Local $I_CTRLID
    $I_CTRLID = GUICtrlCreateLabel($S_TEXT, $I_LEFT, $I_TOP, $I_WIDTH, $I_HEIGHT, $I_STYLE, $I_EXSTYLE)
    If $I_CTRLID <> 0 Then
        GUICtrlSetFont($I_CTRLID, -1, -1, 4)
        GUICtrlSetColor($I_CTRLID, $I_COLOR)
        GUICtrlSetCursor($I_CTRLID, 0)
        If $S_TOOLTIP <> '' Then
            GUICtrlSetTip($I_CTRLID, $S_TOOLTIP)
        EndIf
    EndIf
    Return $I_CTRLID
EndFunc ;==>_GuiCtrlCreateHyperlink

Func _carteReseau()
$carteR = _GetNetworkAdapterList()
;~ _ArrayDisplay($carteR)
If _ArraySearch ($carteR, "Ethernet") <> "-1" then
   $info = _GetNetworkAdapterInfos("Ethernet")
   _ArrayTranspose ($info)
   ;~ _ArrayDisplay($info2)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   ;~ _ArrayDisplay($info)
   $carte1MAC = $info[0]
   $carte1GW = $info[1]
   $carte1IP = $info[2]
   $carte1Name = "Ethernet"
   If $carte1IP <> "" Then
      GUICtrlCreateListViewItem ($carte1Name & '|' & $carte1IP & '|' & $carte1GW & '|' & $carte1MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Ethernet 2") <> "-1" then
   $info = _GetNetworkAdapterInfos("Ethernet 2")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte2MAC = $info[0]
   $carte2GW = $info[1]
   $carte2IP = $info[2]
   $carte2Name = "Ethernet 2"
   If $carte2IP <> "" Then
      GUICtrlCreateListViewItem ($carte2Name & '|' & $carte2IP & '|' & $carte2GW & '|' & $carte2MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Ethernet 3") <> "-1" then
   $info = _GetNetworkAdapterInfos("Ethernet 3")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte3MAC = $info[0]
   $carte3GW = $info[1]
   $carte3IP = $info[2]
   $carte3Name = "Ethernet 3"
   If $carte3IP <> "" Then
      GUICtrlCreateListViewItem ($carte3Name & '|' & $carte3IP & '|' & $carte3GW & '|' & $carte3MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Ethernet 4") <> "-1" then
   $info = _GetNetworkAdapterInfos("Ethernet 4")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte6MAC = $info[0]
   $carte6GW = $info[1]
   $carte6IP = $info[2]
   $carte6Name = "Ethernet 4"
   If $carte6IP <> "" Then
      GUICtrlCreateListViewItem ($carte6Name & '|' & $carte6IP & '|' & $carte6GW & '|' & $carte6MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Ethernet 5") <> "-1" then
   $info = _GetNetworkAdapterInfos("Ethernet 5")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte6MAC = $info[0]
   $carte6GW = $info[1]
   $carte6IP = $info[2]
   $carte6Name = "Ethernet 5"
   If $carte6IP <> "" Then
      GUICtrlCreateListViewItem ($carte6Name & '|' & $carte6IP & '|' & $carte6GW & '|' & $carte6MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Wi-Fi") <> "-1" then
   $info = _GetNetworkAdapterInfos("Wi-Fi")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte4MAC = $info[0]
   $carte4GW = $info[1]
   $carte4IP = $info[2]
   $carte4Name = "WI-Fi"
   If $carte4IP <> "" Then
      GUICtrlCreateListViewItem ($carte4Name & '|' & $carte4IP & '|' & $carte4GW & '|' & $carte4MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Wi-Fi 2") <> "-1" then
   $info = _GetNetworkAdapterInfos("Wi-Fi 2")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte5MAC = $info[0]
   $carte5GW = $info[1]
   $carte5IP = $info[2]
   $carte5Name = "WI-Fi 2"
   If $carte5IP <> "" Then
      GUICtrlCreateListViewItem ($carte5Name & '|' & $carte5IP & '|' & $carte5GW & '|' & $carte5MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Connexion réseau local") <> "-1" then
   $info = _GetNetworkAdapterInfos("Connexion réseau local")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte7MAC = $info[0]
   $carte7GW = $info[1]
   $carte7IP = $info[2]
   $carte7Name = "Connexion réseau local"
   If $carte7IP <> "" Then
      GUICtrlCreateListViewItem ($carte7Name & '|' & $carte7IP & '|' & $carte7GW & '|' & $carte7MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Connexion réseau local 2") <> "-1" then
   $info = _GetNetworkAdapterInfos("Connexion réseau local 2")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte8MAC = $info[0]
   $carte8GW = $info[1]
   $carte8IP = $info[2]
   $carte8Name = "Connexion réseau local 2"
   If $carte8IP <> "" Then
      GUICtrlCreateListViewItem ($carte8Name & '|' & $carte8IP & '|' & $carte8GW & '|' & $carte8MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Connexion réseau local 3") <> "-1" then
   $info = _GetNetworkAdapterInfos("Connexion réseau local 3")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte9MAC = $info[0]
   $carte9GW = $info[1]
   $carte9IP = $info[2]
   $carte9Name = "Connexion réseau local 3"
   If $carte9IP <> "" Then
      GUICtrlCreateListViewItem ($carte9Name & '|' & $carte9IP & '|' & $carte9GW & '|' & $carte9MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Connexion au réseau local* 3") <> "-1" then
   $info = _GetNetworkAdapterInfos("Connexion au réseau local* 3")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte9MAC = $info[0]
   $carte9GW = $info[1]
   $carte9IP = $info[2]
   $carte9Name = "Connexion au réseau local*3"
   If $carte9IP <> "" Then
      GUICtrlCreateListViewItem ($carte9Name & '|' & $carte9IP & '|' & $carte9GW & '|' & $carte9MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Connexion au réseau local* 2") <> "-1" then
   $info = _GetNetworkAdapterInfos("Connexion au réseau local* 2")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte9MAC = $info[0]
   $carte9GW = $info[1]
   $carte9IP = $info[2]
   $carte9Name = "Connexion au réseau local* 2"
   If $carte9IP <> "" Then
      GUICtrlCreateListViewItem ($carte9Name & '|' & $carte9IP & '|' & $carte9GW & '|' & $carte9MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Connexion au réseau local* 1") <> "-1" then
   $info = _GetNetworkAdapterInfos("Connexion au réseau local* 1")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte9MAC = $info[0]
   $carte9GW = $info[1]
   $carte9IP = $info[2]
   $carte9Name = "Connexion au réseau local* 1"
   If $carte9IP <> "" Then
      GUICtrlCreateListViewItem ($carte9Name & '|' & $carte9IP & '|' & $carte9GW & '|' & $carte9MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Eternet0") <> "-1" then
   $info = _GetNetworkAdapterInfos("Ethernet0")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte9MAC = $info[0]
   $carte9GW = $info[1]
   $carte9IP = $info[2]
   $carte9Name = "Eternet0"
   If $carte9IP <> "" Then
      GUICtrlCreateListViewItem ($carte9Name & '|' & $carte9IP & '|' & $carte9GW & '|' & $carte9MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Eternet1") <> "-1" then
   $info = _GetNetworkAdapterInfos("Ethernet1")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte9MAC = $info[0]
   $carte9GW = $info[1]
   $carte9IP = $info[2]
   $carte9Name = "Ethernet1"
   If $carte9IP <> "" Then
      GUICtrlCreateListViewItem ($carte9Name & '|' & $carte9IP & '|' & $carte9GW & '|' & $carte9MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Eternet2") <> "-1" then
   $info = _GetNetworkAdapterInfos("Ethernet2")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte9MAC = $info[0]
   $carte9GW = $info[1]
   $carte9IP = $info[2]
   $carte9Name = "Ethernet2"
   If $carte9IP <> "" Then
      GUICtrlCreateListViewItem ($carte9Name & '|' & $carte9IP & '|' & $carte9GW & '|' & $carte9MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Eternet3") <> "-1" then
   $info = _GetNetworkAdapterInfos("Ethernet3")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte9MAC = $info[0]
   $carte9GW = $info[1]
   $carte9IP = $info[2]
   $carte9Name = "Ethernet3"
   If $carte9IP <> "" Then
      GUICtrlCreateListViewItem ($carte9Name & '|' & $carte9IP & '|' & $carte9GW & '|' & $carte9MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Eternet4") <> "-1" then
   $info = _GetNetworkAdapterInfos("Ethernet4")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte9MAC = $info[0]
   $carte9GW = $info[1]
   $carte9IP = $info[2]
   $carte9Name = "Ethernet4"
   If $carte9IP <> "" Then
      GUICtrlCreateListViewItem ($carte9Name & '|' & $carte9IP & '|' & $carte9GW & '|' & $carte9MAC,$ListView1)
   EndIf
EndIf

If _ArraySearch ($carteR, "Eternet5") <> "-1" then
   $info = _GetNetworkAdapterInfos("Ethernet5")
   _ArrayTranspose ($info)
   _ArrayDeleteEmptyRows ($info)
   ;~ _ArrayDisplay($info)
   ReDim $info[3][2]
   _ArrayColDelete ($info, "1", True)
   $carte9MAC = $info[0]
   $carte9GW = $info[1]
   $carte9IP = $info[2]
   $carte9Name = "Ethernet5"
   If $carte9IP <> "" Then
      GUICtrlCreateListViewItem ($carte9Name & '|' & $carte9IP & '|' & $carte9GW & '|' & $carte9MAC,$ListView1)
   EndIf
EndIf

EndFunc

;~ adresse MAC, Passerelle et IP
Func _ArrayDeleteEmptyRows(ByRef $_array)
Local $dims = UBound($_array, 0), $fired = 0
If not IsArray($_array) Or $dims > 2 Then Return
Switch $dims
  Case 1  ; array 1D
    Local $temp[UBound($_array)]
    For $i = 0 To UBound($_array)-1
      If $_array[$i]  = "" Then   ; si ligne vide (ou autre condition)
        $fired += 1
        ContinueLoop   ; passe à la ligne suivante
      EndIf
      $temp[$i-$fired] = $_array[$i]
    Next
    Redim $temp[UBound($_array)-$fired]
  Case 2  ; array 2D
    Local $cols = UBound($_array, 2), $row = ""
    Local $temp[UBound($_array)][$cols]
    For $i = 0 To UBound($_array)-1
      For $j = 0 To $cols-1
        $row &= $_array[$i][$j]  ; concatène la ligne
      Next
      If $row  = "" Then   ; si ligne vide (ou autre condition)
        $fired += 1
        ContinueLoop   ; passe à la ligne suivante
      EndIf
      For $j = 0 To $cols-1
        $temp[$i-$fired][$j] = $_array[$i][$j]
      Next
      $row  = ""
    Next
    Redim $temp[UBound($_array)-$fired][$cols]
EndSwitch
$_array = $temp
$temp = ""
EndFunc
Modifié en dernier par Pharadius le mer. 17 nov. 2021 09:53, modifié 1 fois.
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2502
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: Récupération information des cartes réseaux  

#2

Message par jguinch »

Bonjour
Tu étais sur la bonne voie, il manquait l'utilisation d'un boucle :
Func _carteReseau()
   $aInfos = _GetNetworkAdapterInfos()
;~    _ArrayDisplay($aInfos)
   For $i = 0 To UBound($aInfos) - 1
      $MAC = $aInfos[$i][5]
      If $MAC Then ; affiche uniquement les adaptateurs réseaux ayant une adresse MAC
         $name = $aInfos[$i][7]
         $IP = $aInfos[$i][29]
         $GW = $aInfos[$i][16]
         GUICtrlCreateListViewItem ($name & '|' & $IP & '|' & $GW & '|' & $MAC,$ListView1)
      EndIf
   Next
EndFunc
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Pharadius
Niveau 1
Niveau 1
Messages : 2
Enregistré le : mer. 20 oct. 2021 10:58
Status : Hors ligne

Re: Récupération information des cartes réseaux

#3

Message par Pharadius »

Bonjour jguinch,
Top merci pour ta réponse. Je ne comprends pas pourquoi je n'ai pas utilisé l'information name de la fonction _GetNetworkAdapterInfos().
C'est beaucoup plus simple. Je me suis senti ... en voyant ta réponse.

Je vais le mettre en résolu.

Juste une petite question, depuis les dernières versions de Windows, je suis obligé de mettre les images dans le dossier temporaire de l'utiliser et aller chercher les images à cet endroit dans le script. Sinon, elles ne sont pas affichées dans ma Gui.
Cela est normal ou pas ?
Avatar du membre
jguinch
Modérateur
Modérateur
Messages : 2502
Enregistré le : lun. 14 févr. 2011 22:12
Status : Hors ligne

Re: Récupération information des cartes réseaux

#4

Message par jguinch »

C'est surement normal, faut juste voir comment tu t'y prends. Si tu as un morceau de script qui permet de reproduire le problème, poste-le (dans un nouveau sujet stp)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
Répondre