Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : WMI, le dé-planter quand il se fige ... [ Réseaux & Internet / Client - Serveur ] (nico1610)

mardi 31 juillet 2007 à 14:22:30 | WMI, le dé-planter quand il se fige ...

nico1610

Membre Club
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 ]

mardi 31 juillet 2007 à 14:45:32 | Re : WMI, le dé-planter quand il se fige ...

mortalino

Membre Club


salut,

je sais pas si ça va convenir à la situation, mais tu peux mettre un DoEvents au début de ta fonction

@++


( Nouveau forum : Exclusivement Office & VBA/STRONG>

mardi 31 juillet 2007 à 17:08:33 | Re : WMI, le dé-planter quand il se fige ...

browser64

Membre Club
1.gif salut a toi "mortalino"
 
je confirme DoEvents te premettra non seulement un gain de temps mais aussi d'eviter de bloquer le systeme "service wmi"

1.gif

mardi 31 juillet 2007 à 17:49:37 | Re : WMI, le dé-planter quand il se fige ...

PCPT

Administrateur CodeS-SourceS
salut,

WMI est SYNCHRONE

doevents n'y changera rien

à toi de charger WMI avant (une requête dont tu ne récupère pas le résultat) durant le splash par exemple, pour qu'il soit plus rapide ensuite.


sinon tes variables sont déclarée où (le sont-elles)? tu les détruis?
pas très bon de remplir une collection qui n'est pas vide. çà par contre çà peut être une raison de plantage.

un me.enabled=false puis true avant/après l'appel de la ..... fonction, çà peut être bon

un fonction qui ne renvoie rien?
un changeIP booléen non déclaré?

bon courage

Prenez un instant pour répondre à ce sondage svp

mardi 31 juillet 2007 à 20:36:45 | Re : WMI, le dé-planter quand il se fige ...

nico1610

Membre Club
Si j'ai bien tout compris, le objWMIService je devrai en avoir qu'un pour tout mon projet ? En le déclarant en Public dans un module par exemple. (ou en Private dans ma From)
(J'y avait pas pensé, je suis con ! lol)
Et donc pour le décharger on est d'accord c'est :
Set objWMIService = Nothing

Sinon je ne vois pas comment ca va résoudre mon bug (enfin peut être), mais la question reste toujour : Comment faire pour mettre un timeout sur le WMI histoire de reprendre le controle de l'application et cas de problème ?

Bien sur vu que je créait a chaque fois des object WMI sans les détruires il y avait peu être une saturation ^^ .
Je vais suivre tes conseils des plus éclairé et je te tiens au courant, en tout cas tu as mis le doit sur une erreur de ma part qui pourait bien expliquer la chose !

Merci
Ergo5 (Alias Nico1610)

[ Lien ]

mardi 31 juillet 2007 à 21:19:53 | Re : WMI, le dé-planter quand il se fige ...

PCPT

Administrateur CodeS-SourceS
en dim dans la fonction qui n'en est pas une

donc çà veut dire qu'il n'y a pas de "option explicit", faudrait y penser
++

Prenez un instant pour répondre à ce sondage svp

mardi 31 juillet 2007 à 21:51:30 | Re : WMI, le dé-planter quand il se fige ...

nico1610

Membre Club
Ok, mais ca me dit toujours pas comment faire si je veut un timeout.

Sinon tes conseils porte lors fruits, mais je suis toujours interéssé par un timeout

mercredi 1 août 2007 à 04:45:30 | Re : WMI, le dé-planter quand il se fige ...

PCPT

Administrateur CodeS-SourceS
Réponse acceptée !
[ Lien ]
[ Lien ]

et plus ou moins de l'asynchrone (pour rester dans ton code et donc pourvoir "compter")
[ Lien ]

++

Prenez un instant pour répondre à ce sondage svp



Cette discussion est classé dans : fonction, string, ip, wmi, fige


Répondre à ce message

Sujets en rapport avec ce message

Retour de Fonction ? (comme en php/Js avec Return) [ par Baldurien ] Je cherche l'équivalent de ceci en php:function red( $string ){ $string = "$string"; return $string;}maintenant, si je veux me servir de ma f Fonction qui renvoit un pointeur... [ par Nosk ] SalutJ'ai un probleme en VB : J'ai une fonction qui devrait normallement renvoyer une string. Malheureusement, cette fonction renvoit une variable de Connaitre son Ip Internet ??? [ par zorglob ] Salut tout le monde !bon apres avoir parcouru tout le forum et les exemple de code, je n'ai pas encore trouve un moyen de recuperer a coup sur son adr UN probleme de " [ par lezabour ] Voila, ma fonction :Public Function test() As StringDim ip As Stringip = mysql.test1.Texttest = ipEnd FunctionJe veux ecrire le resultat de ma fonctio Votre avis de développeur : Passer beaucoup de paramètres à une fonction VB... [ par jockos ] Selon vous, quel est l'inconvénient de passer 15 paramètres de type String (en ByRef) a une fonction ?Chaque String fait au maximum 30 caractères. De Comment passer un caractère dans une fonction [ par CBTech ] ThierryBonjour à tousPour commencer je ne connais pas le langage VBscript et donc j'essai de faire mon apprentissage.Ma question est comment passer un appel de fonction et tableau [ par guiguimac ] bonjour ...petite première pour moi alors je ne suis pas encore super rodé ...comment fait-on pour appeler une sub qui demande des tableaux ... ?Publi Function inverse de Oct(string) [ par lcmartin ] Bonjour,Je voudrais savoir si il existe une fonction sous VB6 qui converti les chaine numérique en caractères, l'inverse de la fonction Oct en fait.J' WMI et VB 6 [ par loops ] Salut,J'ai du code WMI dans un Module qui va chercher certaines infos sur des PCs de mon réseau. les fonctions sont publiques et sont appellees comme Une fonction rebelle qui lache pas l' affaire !!! [ par patl76 ] Salut tout le monde les gens !!Je suis pas loin d' exploser le PC alors je prefere vous demander plutot que de flinguer une machine ( qui est a mon ch


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Téléchargements

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,281 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.