Aller au contenu
  • Pas encore inscrit ?

    Pourquoi ne pas vous inscrire ? C'est simple, rapide et gratuit.
    Pour en savoir plus, lisez Les avantages de l'inscription... et la Charte de Zébulon.
    De plus, les messages que vous postez en tant qu'invité restent invisibles tant qu'un modérateur ne les a pas validés. Inscrivez-vous, ce sera un gain de temps pour tout le monde, vous, les helpeurs et les modérateurs ! :wink:

Lancer plusieurs macro *mcr en Javascript


vlx360

Messages recommandés

J'ai trouvé une partie du problème.

Si tu mets les fichiers à la racine d'un DD (peu importe lequel), çà marche systématiquement, par contre dès que tu les mets dans un dossier, çà ne marche plus...

Il y donc une ligne de code qui n'est pas bonne !

 

Dans cette situation quel est le message retourné par la commande alert ?

Lien vers le commentaire
Partager sur d’autres sites

Le code :

 

<!DOCTYPE html>
<html>
<head>
<title>Lancement des macros</title>
<script type="text/JavaScript">
var myArray = ['appli_001.mcr', 'appli_002.mcr', 'appli_199.mcr', 'appli_200.mcr'];
function lance(Numero_Macro) {
var wScript = new ActiveXObject("Wscript.Shell");
var myMacro = wScript.CurrentDirectory + "\\" + myArray[Numero_Macro];
alert(myMacro);
wScript.run(myMacro);
return false;
}
</script>
</head>
<body>
<hta:application border="none" singleinstance="yes" windowstate="maximize" scroll="no" caption="no" innerborder="no"></hta:application>
.....
<a href="" onClick="lance(0);return false;"><img src="image_001.jpg"></a>
<a href="" onClick="lance(1);return false;"><img src="image_002.jpg"></a>
.....
<a href="" onClick="lance(199);return false;"><img src="image_199.jpg"></a>
<a href="" onClick="lance(200);return false;"><img src="image_200.jpg"></a>
.....

</body>
</html>

 

Le message alert :

 

Sur le message alerte rien du tout si ce n'est la macro qui doit se lancer puis je clique ok et ensuite j'ai le message erreur de script classique : le fichier est introuvable !

 

Alors que tout est au même endroit "macro +fichier html/hta" sauf qu'ils sont dans un dossier au lieu d'être à la racine du disque comme je l'ai indiqué, l'erreur vient forcément du script.

 

Ligne 11 caractère 1

Modifié par vlx360
Lien vers le commentaire
Partager sur d’autres sites

Bonjour vlx360,

 

En premier lieu, il sert à rien de mettre ton texte en gras ...

 

Peux-tu être plus explicite sur ton propos

 

Sur le message alerte rien du tout si ce n'est la macro qui doit se lancer

 

Quel est le contenu du message :

- le chemin complet vers la macro (chemin+nom de la macro) avec une syntaxe correcte ?

- uniquement le nom de la macro

 

NB: oui il y a un problème sur le code mais pas à la ligne 11: quelque chose est erronés avant car l'objet shell avec la méthode run ne fait qu'essayer de lancer un fichier donc s'il y a une erreur vers ce fichier il plante! c'est pourquoi j'ai demandé d'ajouter temporairement la commande alerte.

---edit---voir message suivant

Modifié par Jocko
Lien vers le commentaire
Partager sur d’autres sites

Pour comprendre ce qui se passe, j'ai fait un test complet.

 

Donc dans un fichier html/hta, j'ai copié le dernier code que tu as posté hier :

http://forum.zebulon.fr/lancer-plusieurs-macro-mcr-en-javascript-t220056.html/page-4?do=findComment&comment=1836892

 

et modifié myArray pour lancer un fichier commande windows essai.cmd :

var myArray = ['appli_001.mcr', 'essai.cmd', 'appli_199.mcr', 'appli_200.mcr'];

NB: concernant appli_199.mcr et appli_200.mcr, ton code ne permet pas de lancer ces 2 fichiers car myArray[199] et myArray[200] n'existent pas encore (manque les déclarations des 196 autres fichiers)

Dans cette version test, il faudrait modifier ainsi les lignes

<a href="" onClick="lance(2);return false;"><img src="image_199.jpg"></a>
<a href="" onClick="lance(3);return false;"><img src="image_200.jpg"></a>

(modifié la valeur du paramètre de la fonction lance)

 

le contenu du fichier essai.cmd est:

@echo off
echo %0
set /P Nom="Comment t'appelles-tu ? "
echo Bonjour %Nom%

(affiche le nom complet du fichier et un message "comment t'appelles-tu")

 

J'ai fait 3 essais :

- placer essai.cmd et le fichier html/hta à la racine sous C:

- placer essai.cmd et le fichier html/hta dans un dossier quelconque (C:\SymCache)

- placer essai.cmd et le fichier html/hta dans le dossier "Documents de mon windows7

 

A chaque fois le message d'alerte est correct et essai.cmd est exécuté

 

J'ai placé les captures d'écran correspondantes sur mon site:https://plugout.net/test.zip

 

Le problème semble donc être sur les fichiers mcr et de l'application qui doit les exécuter (restrictions sur l'emplacement des fichiers mcr ?)

 

Je suis désolé mais pour moi le code est correct.

Modifié par Jocko
Lien vers le commentaire
Partager sur d’autres sites

Bonjour Jocko,

 

Si je peux exécuter avec une ligne de commande classique CMD n'importe quelle macro à n'importe quel endroit, cela doit être possible avec le script !

 

Dans les essais je ne parle que de l'appli 1 et 2, je sais bien que les autres ne fonctionnent pas.

 

Pour moi un test complet c'est avec les même éléments, si ils diffèrent ce n'est pas la même situation, pour affirmer ou infirmer un constat, c'est la méthode empirique.

 

Si tu as encore 5 minute pour télécharger super macro et créé une macro, "simple déplacement" et que çà marche chez toi, là oui il y aura vraiment un problème, pour moi c'est la seule bonne méthode de test....

 

Pour le message d'alerte, il marque le chemin de l'appli correct, comme toi, c'est après que çà coince.

 

Comme je l'ai dis si je mets les fichiers à la racine d'un DD ou dans mes documents (donc du disque du système çà marche), si je créé un dossier c:symcache çà fonctionne aussi, mais si je créé un sous dossier dans symcache et bien là çà ne fonctionne plus.

 

C'est comme si çà ne fonctionnait que dans x:dossier mais pas x:dossier/dossier

 

Alors en lançant direct une CMD : C:\SymCache\Nouveau dossier\Testmacro004.hta, il ne trouve pas ou même start C:\SymCache\Nouveau dossier\Testmacro004.hta , tout comme les appli si je fais le test indépendamment !

 

Si je fais la même chose mais avec les fichiers dans C:\SymCache\Testmacro004.hta ou start C:\SymCache\Testmacro004.hta pas de soucis il trouve !

 

Ce serait carrément au niveau de windows que çà bloque !

Modifié par vlx360
Lien vers le commentaire
Partager sur d’autres sites

 

Pour moi un test complet c'est avec les même éléments, si ils diffèrent ce n'est pas la même situation, pour affirmer ou infirmer un constat, c'est la méthode empirique.

 

Si tu as encore 5 minute pour télécharger super macro et créé une macro, "simple déplacement" et que çà marche chez toi, là oui il y aura vraiment un problème, pour moi c'est la seule bonne méthode de test....

 

Pour le message d'alerte, il marque le chemin de l'appli correct, comme toi, c'est après que çà coince.

Tout en ne voulant pas trop m’étendre sur le caractère empirique ou non de mon test.

Sache :

- que si le chemin complet est affiché, le problème se situe alors uniquement au lancement du fichier

- que la méthode run a de façon simplifiée le comportement suivant :

si aucune application n'est indiquée avec le fichier, il recherche dans la base registre quelle application doit être utilisée pour lancer une commande totalement explicite du genre

"c:\chemin vers l'appli\application.exe" "c:\chemin vers le fichier macro\appli_xxx.mcr"

 

Donc s'il échoue à ce niveau plusieurs hypothèses sont envisageables :

- la base registre ne contient les informations suffisantes ou insuffisamment documentées (par exemple si l'application n'est pas située dans un répertoire non listé dans la variable environnement PATH)

- l'application dans sa ligne de commande demande des paramètres complémentaires autre que celui du fichier a exécuté (ou s'ils sont manquants les paramètres pris par défaut par l'application ne sont pas compatibles avec le chemin du fichier mcr)

- l'application au niveau de ses paramètres définit des restrictions

 

En conclusion, ce sont donc des problèmes qui ne relèvent pas du code lui-même mais de tes fichiers

 

C'est pourquoi je considère que le test est bien complet et non empirique! et qu'il a validé le code.

 

Salut.

Modifié par Jocko
Lien vers le commentaire
Partager sur d’autres sites

Comme je l' ai indiqué, ce que voulait dire ma conclusion est que peu importe le fichier, relatif ou non à un code, dans l'absolu on pourrait dire, si celui-ci se trouve dans un sous-dossier, en ligne de commande il ne le trouve pas, ce qui est quand même extraordinaire...

 

Pour le test, si il te manque des éléments çà ne peut pas être un test à 100% fiable, même si çà peut marcher, c'est ce que je soulignais, c'est objectif pour affirmer un résultat que l'on veuille ou non, c'est la seule méthode.

 

Je tacherais de trouver ce qui fait qu'en cmd il ne trouve pas les fichiers !

 

Un grand merci en tout cas à vous deux pour avoir fourni tout ce travail et cette patience, mais rappelez-vous que si vous parlez chinois à quelqu'un qui ne le maitrise, il ne sert à rien d’expliquer à nouveau en chinois !

 

Bonne continuation à vous deux !

Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.
Remarque : votre message nécessitera l’approbation d’un modérateur avant de pouvoir être visible.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

  • En ligne récemment   0 membre est en ligne

    • Aucun utilisateur enregistré regarde cette page.
×
×
  • Créer...