Salut a tous, voila mon problème :
J'utilise les WMI pour la configuration du protocole Réseau de mon ordinateur.
Pour cella j'ai une fonction
SetIp(Ip as String, MacAdress as String)
Qui se charge en fonction de l'adress mac de donner une adress IP a la bonne carte réseau.
Mais une fois sur deux la fonction marche a merveille (changement de l'ip, et aucune fige)
Mais de temps en temps (lors de mes test c'est du 50/50) le changement d'ip ce fait puis l'aplication se fige !
Il faut savoir que pendant le changement d'adresse IP quand tout va bien, l'application se fige aussi (elle attent que le WMI est fini pour reprendre la main)
J'en ai donc déduis que de temps en temps, le WMI ne redonais pas la main a mon application d'où ma question suivante :
exsite t'il un moyen de créer un système de Timeout sur le WMI, histoire de lui laisser 30 secondes, puis si il a toujour pas re-donner la main que je lui force la chose.
Voila, je pense que mon problème est assez bien expliqué, la fonction SetIp fait ceci :
Public Function SetIp(Ip as String, MacAdress as String)
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\.\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery _
("Select * from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE AND MACAddress = '" & MacAdress & "'")
strIPAddress = Array(IP)
For Each objNetAdapter In colNetAdapters
errEnable = objNetAdapter.EnableStatic(strIPAddress, Array("255.255.0.0"))
If errEnable = 0 Then
ChangeIP = True
Else
ChangeIP = False
End If
Next
End Function
Merci d'avance pour vos réponces.
Ergo5 (Alias Nico1610)
[ Lien ]