Ouvrir un hta a partir d'un autre hta sans message (executer ou enregistrer) + passage de parametre et de variable

Soyez le premier à donner votre avis sur cette source.

Vue 13 572 fois - Téléchargée 1 278 fois

Description

C'est dans le titre:

Ouvrir un fichier HTA a partir d'un fichier autre HTA,
sans que windows demande si il faut l'executer ou l'enregistrer.
+
Passer un parametre
+
recupere la variable

J'ai cherché longtemps sur le web une possibilité pour faire ceci.
N'ayant pas trouvé, j'ai pondu ce code.
Regardé le zip pour les explications

P.S: desole il y a un peu de VB pour contourner le probleme de l'alerte windows

Conclusion :


P.S: ceci a été testé en local.
Il semblerait qu'il faut renommer le doc.hta en doc.HTAs
pour que ca fonctionne sur le web (rescepter les majuscule/minuscule de l'extention)

Merci de confirmer pour fonctionnement sur le web

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
197
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2011

Oui néo3 mais si les ActiveX sont bloqué par l'utilisateur (outil, option internet,avancé, sécurité), tu as un joli message windows qui te previens.
Messages postés
68
Date d'inscription
jeudi 14 septembre 2006
Statut
Membre
Dernière intervention
10 septembre 2010

Je manipule ce truc de puis longtemps et il y a beaucoup plus simple :

var reg=new ActiveXObject("WScript.Shell");
reg.run("le chemin du fichier HTA");

Note : fonctionne aussi avec tous les fichiers y compris EXE

Désolé pour ta "trouvaille" ^^

NEO III
Messages postés
197
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2011

Tu sais il est tout à fait possible d'ouvrir un fichier hta directement en local et cela sans avoir de message pour exécuter ou enregistrer.

Oui lorsque tu lance le 1er fichier (TestIndex.hta), je suis d'accord, tu n'as pas de message.
Par contre, losque tu fait un lien vers un autre fichier hta (cf lien2 dans la nouvelle source) le message d'enregistrement ou d'exécution apparait.
Messages postés
197
Date d'inscription
jeudi 27 avril 2006
Statut
Membre
Dernière intervention
10 juillet 2011

Milles excuses pour le principe: Lorsque l'on reprend l'idée d'une autre personne, il me semble qu'il faut le noter.

Donc Merci a toi pour le coup de main du .htas .
(P.S: je t'ai citer sur le site VB, mais ais oublié de le faire ici.
Si tu parles de la source du site VB, c'est de moi)

Voila pour mon "me aculpa".

Pour ce qui est des problemes:
1- une boîte de message demandant si nous voulons exécuter le fichier:
Le but était justement de supprimer le message windows.
Ca marche trés bien sur mon PC (et ceux du boulot), donc je ne vois pas pourquoi le message apparais chez toi.
1er: Comme dis Bricomaniac, c'est peut etre ton antivirus, ou un firewall qui donne le message.
Sur les images postées, il semble que ce soit McAffe qui bloque le hta (voir symbole en bas de la fenetre).
Le message windows se presente comme cela: http://img177.imageshack.us/my.php?image=buget2.jpg
2eme: a partir d'où l'as-tu executer?

2-Regardes j'ai mis ton fichier doc.hta sur mon bureau et je l'ai ouvert, je n'ai pas eu la boîte, exécuter.
Donc cette foi le message executer, enregistrer n'apparait pas... c'est bizard puisqu'il apparaissait dans ton 1er post.

3-Il semblerait qu'il y ait une faute dans ton fichier hta à la ligne 36.
L'erreur apparait lorsque tu lance le fichier doc.hta dirrectement (sans passer par TestIndex.hta et le lien).
C'est normal dans ce cas;
l'intruction: var ParamEntier=doc.commandLine.split("/?");
prend l'url de la page,
creer un tableau ParamEntier avec dans
-ParamEntier[0] ce qui est avant le /?
-ParamEntier[1] ce qui est aprés le /?
>Split permet d'isoler les champ entre /?

or quand tu lance le fichier dirrectement, il n'y a pas de /? dans l'URL, donc param[1] n'existe pas. Du coup quand tu demande d'y acceder, il te plante.
(3message que j'envoie: 2eme partie, apres le symbole /?:undefined)

Pour amméliorer, On pourrait mettre une securité du genre:
if(ParamEntier!=1){ tout le reste du code}
else alert('le fichier a été lancé dirrectement, il n\'y a donc pas de parametre');

j'uploade la source avec modif tout de suite.

Voila j'espere que ces explications vous irons,
n'hesitez pas sinon.
Messages postés
24
Date d'inscription
dimanche 20 août 2006
Statut
Membre
Dernière intervention
7 janvier 2007

ton code est bloqué par mon antivirus !

Tu peut utiliser un object :
dans ton head tu met :
<OBJECT ID="OPEN" ViewAsText CLASSID="clsid:13709620-C279-11CE-A49E-444553540000"></OBJECT>
et ensuite pour ton lien tu met href="javascript:OPEN.ShellExecute('chemin de ton hta')"
ps : seul probleme je croit que sa ne fonctionne pas sous 98 et versions anterieures.
Afficher les 9 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.