Partagez des fonctions et des UDF AutoIt.
-
jguinch
- Modérateur

- Messages : 2469
- Enregistré le : lun. 14 févr. 2011 22:12
-
Status :
Hors ligne
#1
Message
par jguinch » lun. 29 avr. 2013 14:47
Bonjour.
Je vous propose cet UDF qui permet de configurer la connexion réseau, obtenir des informations sur votre carte ou connexion.
Les fonctions utilisent WMI, ce qui évite de passer par des commandes externes telles que netsh.
Pour ceux qui utilisent une ancienne version de cet UDF, la fonction _InitWmi() a été supprimée. Il suffit donc de supprimer cette ligne dans votre script
Liste des fonctions disponibles :
► Afficher le texteFonctions
_DisableNetAdapter ; Désactive la carte réseau spécifiée
_EnableDHCP ; Configure la carte réseau spécifiée en DHCP (Adresse IP)
_EnableDHCP_DNS ; Configure la carte réseau spécifiée en DHCP (DNS)
_EnableNetAdapter ; Active la carte réseau spécifiée
_EnableStatic ; Configure l'adresse(s) IP statique(s) et masque(s) de sous-réseau de la carte réseau spécifiée
_FlushDNS ; Vide le cache DNS
_GetNetworkAdapterFromID ; Récupére le nom de la carte réseau (physique) en fonction du nom de la connexion (Connexion au réseau local par ex)
_GetNetworkAdapterInfos ; Récupère des informations sur la/les carte(s) réseau
_GetNetworkAdapterList ; Liste les cartes/connexions réseau
_GetNetworkGUI ; Récupère le GUID de la carte spécifiée (tel qu'il est défini dans la base de registre)
_GetNetworkIDFromAdapter ; Récupérer le nom de la connexion réseau (Connexion au réseau local) en fonction du nom de la carte (physique)
_IsWirelessAdapter ; Permet de savoir si la carte spécifiée est une carte wifi ou non
_ReleaseDHCPLease ; Libère la configuration DHCP actuelle
_RenewDHCPLease ; Renouvelle la configuration DHCP
_SetDNSDomain ; Configure le suffixe DNS pour la carte spécifiée
_SetDNSServerSearchOrder ; Configurer les adresses IP DNS et leur ordre pour la carte spécifiée
_SetDNSSuffixSearchOrder ; Configure l'ordre de recherche des domaines DNS pour la carte spécifiée
_SetDynamicDNSRegistration ; Active ou désactive les options d'enregistrement DNS pour la carte spécifiée
_SetGateways ; Configure la/les passerelle(s) pour la carte spécifiée
_SetWINSServer ; Configure le(s) serveur(s) WINS pour la carte spécifiée
Quelques exemples :
► Afficher le texteexemples
Code : Tout sélectionner
#Include <array.au3> ; uniquement pour _ArrayDisplay()
#Include "network.au3"
; Liste des connexions/cartes disponibles
$infos = _GetNetworkAdapterList()
_ArrayDisplay($infos)
; Savoir si une carte est une carte wifi
If _IsWirelessAdapter("Intel(R) Centrino(R) Advanced-N 6205") Then MsgBox(0, "", "Cette carte est une carte wifi")
; Informations sur la carte dont la connexion réseau se nomme "Connexion au réseau local"
$infos = _GetNetworkAdapterInfos("Connexion au réseau local")
_ArrayDisplay($infos)
; Désactivation de la connexion correspondant à la carte réseau "Broadcom NetLink (TM) Gigabit Ethernet"
_DisableNetAdapter("Broadcom NetLink (TM) Gigabit Ethernet")
; Activation de la connexion correspondant à la carte réseau "Connexion au réseau local"
_EnableNetAdapter("Connexion au réseau local")
; Configurer la connexion en DHCP
_EnableDHCP("Broadcom NetLink (TM) Gigabit Ethernet")
; Configurer l'adresse IP manuellement
_EnableStatic("Broadcom NetLink (TM) Gigabit Ethernet", "192.168.10.11", "255.255.255.0")
; Configurer la passerelle par défaut
_SetGateways("Broadcom NetLink (TM) Gigabit Ethernet", "192.168.10.1")
; Configuration des serveurs DNS
Local $DNS_SERVERS[4] = [ "192.168.100.1", "192.168.100.2", "192.168.100.3", "192.168.100.4" ]
_SetDNSServerSearchOrder("Connexion au réseau local", $DNS_SERVERS)
; Configurer le domaine DNS
_SetDNSDomain ("Connexion au réseau local", "mondomain.loc")
; Configurer les suffixes DNS :
Local $DNS_SUFFIXES[2] = [ "mondomain.loc", "mydomain.priv" ]
_SetDNSSuffixSearchOrder("Connexion au réseau local", $DNS_SUFFIXES)
; Vider le cache DNS
FlushDNS()
; Configurer les serveurs WINS
_SetWINSServer("Connexion au réseau local", "192.168.100.251", "192.168.100.252")
; Cocher les options "Enregistrer les adresses de cette connexion dans le système DNS et
; Enregistrer le suffixe DNS de cette connexion pour l'enregistrement DNS
_SetDynamicDNSRegistration("Connexion au réseau local", True, True)
; Libère le bail DHCP
_ReleaseDHCPLease()
; Renouvelle le bail DHCP
_RenewDHCPLease()
Merci de me faire part de tout dysfonctionnement.
-
Fichiers joints
-
Network.au3
- network.au3
- (51.36 Kio) Téléchargé 807 fois
Modifié en dernier par
jguinch le mer. 27 nov. 2013 20:57, modifié 19 fois.
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
-
GhostLine
- Niveau 7

- Messages : 341
- Enregistré le : jeu. 12 mars 2009 15:28
- Localisation : Paris
-
Status :
Hors ligne
#2
Message
par GhostLine » mar. 30 avr. 2013 08:24
Bon boulot ! Je testerai ça pour mon prochain client : c'est quand même plus clean que de faire des appels netsh en ligne de commande

-
jguinch
- Modérateur

- Messages : 2469
- Enregistré le : lun. 14 févr. 2011 22:12
-
Status :
Hors ligne
#3
Message
par jguinch » mar. 07 mai 2013 14:46
Modifications :
- Ajout de la fonction _IsWirelessAdapter qui permet de savoir si une carte est une carte wifi (merci le forum US)
- Modification dans la fonction _GetNetworkAdapterList : filtre les cartes avec le champs 'AdapterType' au lieu du champ IPEnable
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
-
ricky
- Niveau 7

- Messages : 443
- Enregistré le : ven. 06 févr. 2009 09:25
- Localisation : Suisse
-
Status :
Hors ligne
#4
Message
par ricky » mer. 08 mai 2013 08:17
Hello,
merci pour ce script, je me réjouis de l'utiliser, mais pour l'instant il ne marche pas!
En mettant la ligne ci-dessous, tu verras les mêmes erreurs que moi :
#AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w- 4 -w 5 -w 6 -w 7
puis ensuite tu fais CTRL + F5
Il manque les includes, des variables sont déclarées, mais non-utilisées et là ou elles devraient exister elles sont pas là (par exemple ireturn),...
-
jguinch
- Modérateur

- Messages : 2469
- Enregistré le : lun. 14 févr. 2011 22:12
-
Status :
Hors ligne
#5
Message
par jguinch » mer. 08 mai 2013 10:22
OK
Merci pour les infos.
J'ai effectué quelques corrections...
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
-
jguinch
- Modérateur

- Messages : 2469
- Enregistré le : lun. 14 févr. 2011 22:12
-
Status :
Hors ligne
#6
Message
par jguinch » mer. 03 juil. 2013 09:39
Petite mise à jour de l'UDF :
- Correction de bugs relatifs à Windows XP
- Utilisation de la base de registre au lieu de WMI pour certaines requêtes (plus rapide)
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
-
jguinch
- Modérateur

- Messages : 2469
- Enregistré le : lun. 14 févr. 2011 22:12
-
Status :
Hors ligne
#7
Message
par jguinch » jeu. 04 juil. 2013 21:51
Nouvelle petite modification (encore !) :
- EnableStatic() permet d'affecter plusieurs adresses IP/masques à la carte réseau
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
-
GhostLine
- Niveau 7

- Messages : 341
- Enregistré le : jeu. 12 mars 2009 15:28
- Localisation : Paris
-
Status :
Hors ligne
#8
Message
par GhostLine » jeu. 01 août 2013 15:29
J'ai un message d'erreur à la compilation dont je ne comprends pas le sens :
C:\Program Files (x86)\AutoIt3\Include\network.au3(1050,80) : ERROR: _Array2String() previously called with expression on Const ByRef param(s).
Func _Array2String(Const ByRef $avArray, $sDelim = "|", $iStart = 0, $iEnd = 0)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^
J'ai mal fait quoi ?
Pour mémoire, mon petit bout de code :
► Afficher le texte
Code : Tout sélectionner
Func change_ip()
_InitWmi()
$Cx = "Connexion au réseau local"
$adresse = IniRead("c:\temp\integration.ini", "GENERAL", "ipcaisse", "")
$passerelle = IniRead("c:\temp\integration.ini", "GENERAL", "passcaisse", "")
$masque = "255.255.255.0"
$dns_prefere = "10.0.10.80"
$dns_auxiliaire = "10.204.0.152"
Local $DNS_SERVERS[2] = [$dns_prefere,$dns_auxiliaire]
SplashTextOn("Configuration IP", "Configuration IP en cours ...", 400, 50, -1, -1, 33, -1, 18)
Sleep(1000)
_EnableStatic($Cx, $adresse, $masque)
_SetGateways($Cx, $passerelle)
_SetDNSServerSearchOrder($Cx, $DNS_SERVERS)
SplashTextOn("Configuration IP", "Configuration IP terminée.", 400, 50, -1, -1, 33, -1, 18)
Sleep(1000)
SplashOff()
EndFunc ;==>change_ip
-
jguinch
- Modérateur

- Messages : 2469
- Enregistré le : lun. 14 févr. 2011 22:12
-
Status :
Hors ligne
#9
Message
par jguinch » jeu. 01 août 2013 19:30
Salut GhostLine.
Désolé, l'erreur était dans mon script, j'ai corrigé et mis à jour l'UDF.
Est-ce que tu peux le re-télécharger et essayer ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
-
GhostLine
- Niveau 7

- Messages : 341
- Enregistré le : jeu. 12 mars 2009 15:28
- Localisation : Paris
-
Status :
Hors ligne
#10
Message
par GhostLine » ven. 02 août 2013 10:33
Ca woule ! C'est en prod et ca fonctionne

Merci !
-
mikell
- Modérateur

- Messages : 5892
- Enregistré le : dim. 29 mai 2011 16:32
- Localisation : Deep Cévennes
-
Status :
Hors ligne
#11
Message
par mikell » ven. 02 août 2013 13:13
@jguinch
Carrément virer le Const ByRef qui dérange, ça fait pas un peu "toi mal aux dents, moi couper tête" ?

" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
-
jguinch
- Modérateur

- Messages : 2469
- Enregistré le : lun. 14 févr. 2011 22:12
-
Status :
Hors ligne
#12
Message
par jguinch » ven. 02 août 2013 13:18
@mikell : oui, j'ai fait au plus simple...

Tu aurais fais quoi ?
Le script, ça fait gagner beaucoup de temps... à condition d'en avoir beaucoup devant soi !
-
mikell
- Modérateur

- Messages : 5892
- Enregistré le : dim. 29 mai 2011 16:32
- Localisation : Deep Cévennes
-
Status :
Hors ligne
#13
Message
par mikell » ven. 02 août 2013 16:39
Comme je suis tordu j'aurais passé quelques heures à chercher d'où pouvait bien venir cette foutue erreur (après tout ya bien un Const ByRef dans la _ArrayToString() d'origine, ndd !)
Et à la fin j'aurais fait comme toi

" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
-
Rapace15
- Niveau 3

- Messages : 36
- Enregistré le : lun. 17 mai 2010 13:15
-
Status :
Hors ligne
#14
Message
par Rapace15 » ven. 12 avr. 2019 09:11
Bonjour à tous,
Je rencontre un souci avec l'UDF sous Windows10
La fonction _GetNetworkAdapterList me retourne une carte qui n’apparaît pas via la commande ipconfig ou l'interface graphique de gestion.
Code : Tout sélectionner
Microsoft Kernel Debug Network Adapter Connexion au réseau local* 1 ==> N'apparaît pas
Realtek PCIe GBE Family Controller Ethernet ==> Apparaît
Est-ce normal ?
Je n'ai pas ce souci sur les postes de mon parc qui se trouvent sous Windows7
Merci de vos réponses.