[..] erreur avec ObjCreate

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Rapace15
Niveau 3
Niveau 3
Messages : 36
Enregistré le : lun. 17 mai 2010 14:15
Status : Hors ligne

[..] erreur avec ObjCreate

#1

Message par Rapace15 »

Bonjour à tous,

Mon service gère un parc de 500 micros sous XP. J'ai créé un IconTray pour pousser une boite à raccourcis aux utilisateurs du réseau. Cela fonctionne très bien, mais je me retrouve avec une erreur bizarre sur certains postes (cf ci desous).
Ici le message d'erreur sur fichier compilé
Ici le message d'erreur sur fichier compilé
err_sumitray.JPG (8.3 Kio) Vu 1430 fois
En recherchant le bug, je me suis aperçu que j'ai une erreur systématiquement lorsque j'utilise la commande suivante (ligne dans la boucle FOR) :

Code : Tout sélectionner

Variable globale de stockage des commandes
Global $commands = ObjCreate("Scripting.Dictionary")

for $id=1 to 5
    [b]$commands.item($id) = "Commande " & $id[/b]
Next
 
Cette syntaxe fonctionne sur de nombreux postes, mais j'ai des plantage systématiquement sur une dizaine de poste.
Quelqu'un aurait-il une piste SVP ?
Avatar du membre
zeshrek
Niveau 10
Niveau 10
Messages : 984
Enregistré le : mer. 17 nov. 2010 09:31
Localisation : Sur ma chaise
Status : Hors ligne

Re: [..] erreur avec ObjCreate

#2

Message par zeshrek »

Hmmm... si ton $command.item correspond a un tableau, il faut des crochets pas des parentheses.
Sinon, il faut voir a quoi correspondent ces items du $commands
Si vis pacem para bellum
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] erreur avec ObjCreate

#3

Message par Tlem »

D'après les éléments donnés, la conclusion qui s'impose est que Global $commands = ObjCreate("Scripting.Dictionary") n'a pas fonctionné (environnement non disponible peut être) et donc $commands n'est pas un objet.
Donc forcément, la suite ne peut pas fonctionner. :roll:
Essayez de rajouter ceci avant la boucle For :

Code : Tout sélectionner

If Not IsObj ($commands) Then
     MsgBox(0, "Erreur", "$commands n'est pas un objet")
     Exit
EndIf
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Rapace15
Niveau 3
Niveau 3
Messages : 36
Enregistré le : lun. 17 mai 2010 14:15
Status : Hors ligne

Re: [..] erreur avec ObjCreate

#4

Message par Rapace15 »

Merci de vos réponses.
En fait pour faire mon tray, je me suis servi de ce post (sans trop rien comprendre au début)...
Tlem a écrit :D'après les éléments donnés, la conclusion qui s'impose est que Global $commands = ObjCreate("Scripting.Dictionary") n'a pas fonctionné (environnement non disponible peut être) et donc $commands n'est pas un objet.
Ta remarque penche effectivement dans le même sens que ce que je pensais. Juste quelques questions qui pourraient m'aider à comprendre un peu plus cette panne :
faut-il des dll particuliers pour utiliser cette commande ?
Pourquoi cela fonctionne-t-il sur la plupart de mes postes ?

En fait comme c'est indiqué sur le post d'origine, je souhaitais éviter les tableaux qui me semblaient un peu "hard" à gérer puisque au départ je n'en connais pas la dimension. Mais je pense que je vais finir par le gérer comme ça si ça évite le bug. Je vous tiens au courant. Merci encore.
Rapace15
Niveau 3
Niveau 3
Messages : 36
Enregistré le : lun. 17 mai 2010 14:15
Status : Hors ligne

Re: [..] erreur avec ObjCreate

#5

Message par Rapace15 »

Tlem a écrit :D'après les éléments donnés, la conclusion qui s'impose est que Global $commands = ObjCreate("Scripting.Dictionary") n'a pas fonctionné (environnement non disponible peut être) et donc $commands n'est pas un objet.
Donc forcément, la suite ne peut pas fonctionner. :roll:
Essayez de rajouter ceci avant la boucle For :

Code : Tout sélectionner

If Not IsObj ($commands) Then
     MsgBox(0, "Erreur", "$commands n'est pas un objet")
     Exit
EndIf
Je confirme, je passe bien par la gestion d'erreur et la box s'affiche.
Je vais donc essayer de passer par des array.

Toutefois, si quelqu'un pouvait m'expliquer pourquoi ça plante (faut-il rajouter une dll ?), je suis preneur. J'attends donc un petit peu pour marquer ce sujet comme résolu :wink:
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11824
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] erreur avec ObjCreate

#6

Message par Tlem »

A première vue, c'est un problème avec COM => http://www.microsoft.com/com/default.mspx

Donc là comme ca je sais pas trop, mais peut être manque t-il un élément indispensable à l'utilisation correcte de COM. :roll:
Il faut voir si d'autres commandes COM fonctionne.

Essayez d'installer/Mettre à jour le .NET Framework. :wink:
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre