j'ai développé une macro pour obtenir et changer d'adresse IP & co. Avec
toutes une gestion de création de sites avec gestion des IPs de chaque site,
imprimante par defaut. Mon soucis est que mes fonctions ne fonctionnenet que
lorsque je suis raccordé au réseau et ça me pose quelques problèmes.
Connaissez-vous une autre manière d'obtenir/changer les IPs, DNS, WINS sans
devoir être raccordé ?
Merci d'avance.
John
Public Enum AddressIPType
IP_Adresse = 0
IP_SousReseau = 1
IP_Passerelle = 2
End Enum
'---------------------------------------------------------------------------
------------
' Procedure : GetIPAddress
' DateHeure : 18/10/2004 18:32
' Auteur : jmouchain
' Sujet : Pour obtenir les adresses IP locales
' Sans paramètres renvoi l'adresse IP de la session
'---------------------------------------------------------------------------
------------
'
Public Function GetIPAddress(Optional IPType As AddressIPType = IP_Adresse,
Optional Index As Integer = 0) As String
Dim Adapter As Object
On Error Resume Next
Set Adapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" &
Index)
Select Case IPType
Case IP_Adresse
GetIPAddress = Adapter.ipaddress(0)
Case IP_SousReseau
GetIPAddress = Adapter.IPSubnet(0)
Case IP_Passerelle
GetIPAddress = Adapter.DefaultIPGateway(0)
End Select
End Function
'---------------------------------------------------------------------------
------------
' Procedure : SetIPAdress
' DateHeure : 18/10/2004 18:33
' Auteur : jmouchain
' Sujet : Défini l'adresse IP locale (Index = n° de la carte réseau 0 :
si 1 seule)
' tabIP(0 to 2) => array contenant l'adresse Ip, le masque de
sous-réseau & passerelle
' tabDNS(0 to 1) => array contenant le(s) DNS
' tabWINS(0 to 1) => array contenant le(s) WINS
' DHCP : si True, tabIP ignoré et DHCP activé si False adresse
static
' DNS : si False, tabDNS est ignoré
' WINS : si False, tabWINS est ignoré
'---------------------------------------------------------------------------
------------
'
Public Function SetIPAdress(Optional tabIP As Variant = "", Optional tabDNS
As Variant = "", Optional tabWINS As Variant = "", Optional DHCP As Boolean
= False, Optional DNS As Boolean = False, Optional WINS As Boolean = False)
As Boolean
Dim objWMIService As Object, errGateways As Long
Dim colNetAdapters As Object, objNetAdapter As Variant
Dim objNetAdapters As Variant, Err As Long
Set objWMIService = GetObject("winmgmts:\\" & IIf(GetIPAddress = "",
".", GetIPAddress) & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from
Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetAdapters In colNetAdapters
If DNS Then
Err = objNetAdapters.SetDNSServerSearchOrder(tabDNS)
Else
Err = objNetAdapters.SetDNSServerSearchOrder()
End If
Next
For Each objNetAdapter In colNetAdapters
If DHCP Then
Err = Err + objNetAdapter.EnableDHCP()
ElseIf IsArray(tabIP) Then
If UBound(tabIP) = 2 Then
Err = Err + objNetAdapter.EnableStatic(Array(tabIP(0)),
Array(tabIP(1)))
Err = Err + objNetAdapter.setgateways(Array(tabIP(2)),
Array(1))
Else
Err = 1
End If
Else
Err = 1
End If
If WINS And IsArray(tabWINS) Then
If UBound(tabWINS) = 1 Then
Err = Err + objNetAdapter.SetWINSServer(tabWINS(0),
tabWINS(1))
Else
Err = 1
End If
ElseIf Not WINS Then
Err = Err + objNetAdapter.SetWINSServer("", "")
Else
Err = 1
End If
SetIPAdress = Err = 0
Next
End Function
------------ ' Procedure : GetIPAddress ' DateHeure : 18/10/2004 18:32 ' Auteur : jmouchain ' Sujet : Pour obtenir les adresses IP locales ' Sans paramètres renvoi l'adresse IP de la session
------------ ' Public Function GetIPAddress(Optional IPType As AddressIPType IP_Adresse, Optional Index As Integer = 0) As String Dim Adapter As Object
On Error Resume Next Set Adapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" &
Index) Select Case IPType Case IP_Adresse GetIPAddress = Adapter.ipaddress(0) Case IP_SousReseau GetIPAddress = Adapter.IPSubnet(0) Case IP_Passerelle GetIPAddress = Adapter.DefaultIPGateway(0) End Select End Function
------------ ' Procedure : SetIPAdress ' DateHeure : 18/10/2004 18:33 ' Auteur : jmouchain ' Sujet : Défini l'adresse IP locale (Index = n° de la carte réseau 0 :
si 1 seule) ' tabIP(0 to 2) => array contenant l'adresse Ip, le masque de sous-réseau & passerelle ' tabDNS(0 to 1) => array contenant le(s) DNS ' tabWINS(0 to 1) => array contenant le(s) WINS ' DHCP : si True, tabIP ignoré et DHCP activé si False adresse static ' DNS : si False, tabDNS est ignoré ' WINS : si False, tabWINS est ignoré
------------ ' Public Function SetIPAdress(Optional tabIP As Variant = "", Optional tabDNS
As Variant = "", Optional tabWINS As Variant = "", Optional DHCP As Boolean
= False, Optional DNS As Boolean = False, Optional WINS As Boolean False) As Boolean Dim objWMIService As Object, errGateways As Long Dim colNetAdapters As Object, objNetAdapter As Variant Dim objNetAdapters As Variant, Err As Long
Set objWMIService = GetObject("winmgmts:" & IIf(GetIPAddress = "", ".", GetIPAddress) & "rootcimv2") Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") For Each objNetAdapters In colNetAdapters If DNS Then Err = objNetAdapters.SetDNSServerSearchOrder(tabDNS) Else Err = objNetAdapters.SetDNSServerSearchOrder() End If Next For Each objNetAdapter In colNetAdapters If DHCP Then Err = Err + objNetAdapter.EnableDHCP() ElseIf IsArray(tabIP) Then If UBound(tabIP) = 2 Then Err = Err + objNetAdapter.EnableStatic(Array(tabIP(0)), Array(tabIP(1))) Err = Err + objNetAdapter.setgateways(Array(tabIP(2)), Array(1)) Else Err = 1 End If Else Err = 1 End If If WINS And IsArray(tabWINS) Then If UBound(tabWINS) = 1 Then Err = Err + objNetAdapter.SetWINSServer(tabWINS(0), tabWINS(1)) Else Err = 1 End If ElseIf Not WINS Then Err = Err + objNetAdapter.SetWINSServer("", "") Else Err = 1 End If SetIPAdress = Err = 0 Next End Function
D'ailleurs je viens de voir que ma fonction GetIPAdress ne marche pas sur
tous les postes. :'(
John
"John Fuss" <newskob650@yahoo.fr> a écrit dans le message de
news:clnjee$u2k$1@s5.feed.news.oleane.net...
Bonjour à tous,
j'ai développé une macro pour obtenir et changer d'adresse IP & co. Avec
toutes une gestion de création de sites avec gestion des IPs de chaque
site,
imprimante par defaut. Mon soucis est que mes fonctions ne fonctionnenet
que
lorsque je suis raccordé au réseau et ça me pose quelques problèmes.
Connaissez-vous une autre manière d'obtenir/changer les IPs, DNS, WINS
sans
devoir être raccordé ?
Merci d'avance.
John
Public Enum AddressIPType
IP_Adresse = 0
IP_SousReseau = 1
IP_Passerelle = 2
End Enum
------------
' Procedure : GetIPAddress
' DateHeure : 18/10/2004 18:32
' Auteur : jmouchain
' Sujet : Pour obtenir les adresses IP locales
' Sans paramètres renvoi l'adresse IP de la session
------------
'
Public Function GetIPAddress(Optional IPType As AddressIPType IP_Adresse,
Optional Index As Integer = 0) As String
Dim Adapter As Object
On Error Resume Next
Set Adapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration="
&
Index)
Select Case IPType
Case IP_Adresse
GetIPAddress = Adapter.ipaddress(0)
Case IP_SousReseau
GetIPAddress = Adapter.IPSubnet(0)
Case IP_Passerelle
GetIPAddress = Adapter.DefaultIPGateway(0)
End Select
End Function
------------
' Procedure : SetIPAdress
' DateHeure : 18/10/2004 18:33
' Auteur : jmouchain
' Sujet : Défini l'adresse IP locale (Index = n° de la carte réseau 0
:
si 1 seule)
' tabIP(0 to 2) => array contenant l'adresse Ip, le masque de
sous-réseau & passerelle
' tabDNS(0 to 1) => array contenant le(s) DNS
' tabWINS(0 to 1) => array contenant le(s) WINS
' DHCP : si True, tabIP ignoré et DHCP activé si False adresse
static
' DNS : si False, tabDNS est ignoré
' WINS : si False, tabWINS est ignoré
------------
'
Public Function SetIPAdress(Optional tabIP As Variant = "", Optional
tabDNS
As Variant = "", Optional tabWINS As Variant = "", Optional DHCP As
Boolean
= False, Optional DNS As Boolean = False, Optional WINS As Boolean False)
As Boolean
Dim objWMIService As Object, errGateways As Long
Dim colNetAdapters As Object, objNetAdapter As Variant
Dim objNetAdapters As Variant, Err As Long
Set objWMIService = GetObject("winmgmts:\" & IIf(GetIPAddress = "",
".", GetIPAddress) & "rootcimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from
Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetAdapters In colNetAdapters
If DNS Then
Err = objNetAdapters.SetDNSServerSearchOrder(tabDNS)
Else
Err = objNetAdapters.SetDNSServerSearchOrder()
End If
Next
For Each objNetAdapter In colNetAdapters
If DHCP Then
Err = Err + objNetAdapter.EnableDHCP()
ElseIf IsArray(tabIP) Then
If UBound(tabIP) = 2 Then
Err = Err + objNetAdapter.EnableStatic(Array(tabIP(0)),
Array(tabIP(1)))
Err = Err + objNetAdapter.setgateways(Array(tabIP(2)),
Array(1))
Else
Err = 1
End If
Else
Err = 1
End If
If WINS And IsArray(tabWINS) Then
If UBound(tabWINS) = 1 Then
Err = Err + objNetAdapter.SetWINSServer(tabWINS(0),
tabWINS(1))
Else
Err = 1
End If
ElseIf Not WINS Then
Err = Err + objNetAdapter.SetWINSServer("", "")
Else
Err = 1
End If
SetIPAdress = Err = 0
Next
End Function
------------ ' Procedure : GetIPAddress ' DateHeure : 18/10/2004 18:32 ' Auteur : jmouchain ' Sujet : Pour obtenir les adresses IP locales ' Sans paramètres renvoi l'adresse IP de la session
------------ ' Public Function GetIPAddress(Optional IPType As AddressIPType IP_Adresse, Optional Index As Integer = 0) As String Dim Adapter As Object
On Error Resume Next Set Adapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" &
Index) Select Case IPType Case IP_Adresse GetIPAddress = Adapter.ipaddress(0) Case IP_SousReseau GetIPAddress = Adapter.IPSubnet(0) Case IP_Passerelle GetIPAddress = Adapter.DefaultIPGateway(0) End Select End Function
------------ ' Procedure : SetIPAdress ' DateHeure : 18/10/2004 18:33 ' Auteur : jmouchain ' Sujet : Défini l'adresse IP locale (Index = n° de la carte réseau 0 :
si 1 seule) ' tabIP(0 to 2) => array contenant l'adresse Ip, le masque de sous-réseau & passerelle ' tabDNS(0 to 1) => array contenant le(s) DNS ' tabWINS(0 to 1) => array contenant le(s) WINS ' DHCP : si True, tabIP ignoré et DHCP activé si False adresse static ' DNS : si False, tabDNS est ignoré ' WINS : si False, tabWINS est ignoré
------------ ' Public Function SetIPAdress(Optional tabIP As Variant = "", Optional tabDNS
As Variant = "", Optional tabWINS As Variant = "", Optional DHCP As Boolean
= False, Optional DNS As Boolean = False, Optional WINS As Boolean False) As Boolean Dim objWMIService As Object, errGateways As Long Dim colNetAdapters As Object, objNetAdapter As Variant Dim objNetAdapters As Variant, Err As Long
Set objWMIService = GetObject("winmgmts:" & IIf(GetIPAddress = "", ".", GetIPAddress) & "rootcimv2") Set colNetAdapters = objWMIService.ExecQuery("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE") For Each objNetAdapters In colNetAdapters If DNS Then Err = objNetAdapters.SetDNSServerSearchOrder(tabDNS) Else Err = objNetAdapters.SetDNSServerSearchOrder() End If Next For Each objNetAdapter In colNetAdapters If DHCP Then Err = Err + objNetAdapter.EnableDHCP() ElseIf IsArray(tabIP) Then If UBound(tabIP) = 2 Then Err = Err + objNetAdapter.EnableStatic(Array(tabIP(0)), Array(tabIP(1))) Err = Err + objNetAdapter.setgateways(Array(tabIP(2)), Array(1)) Else Err = 1 End If Else Err = 1 End If If WINS And IsArray(tabWINS) Then If UBound(tabWINS) = 1 Then Err = Err + objNetAdapter.SetWINSServer(tabWINS(0), tabWINS(1)) Else Err = 1 End If ElseIf Not WINS Then Err = Err + objNetAdapter.SetWINSServer("", "") Else Err = 1 End If SetIPAdress = Err = 0 Next End Function