Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[HTA] passage de paramètres (équivalent de "wscript.Arguments sous Wsh)

41 views
Skip to first unread message

sympatix

unread,
Jul 23, 2005, 6:51:44 AM7/23/05
to
bonjour !

J'aurais besoin de passer en paramètres le path d'un dossier
dans une application HTA (en vbs),
en faisant un copier-coller du dit dossier sur mon fichier
HTA (exactement comme on peut faire un passage de paramètres en VbScript
sous Wsh, à l'aide de l'objet "Wscript.arguments", mais qui malheureusement,
n'est pas disponible dans un contexte HTA.
Est-ce faisable sans mettre en oeuvre une trop grosse usine à gaz, et si
oui, comment ?

merci d'avance :-)
--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)

Fred

unread,
Jul 23, 2005, 7:29:07 AM7/23/05
to
Dans son message %23gMhFS3...@TK2MSFTNGP12.phx.gbl
sympatix nous dit :

> bonjour !
>
> J'aurais besoin de passer en paramètres le path d'un dossier
> dans une application HTA (en vbs),
> en faisant un copier-coller du dit dossier sur mon fichier
> HTA (exactement comme on peut faire un passage de paramètres en
> VbScript sous Wsh, à l'aide de l'objet "Wscript.arguments", mais qui
> malheureusement, n'est pas disponible dans un contexte HTA.
> Est-ce faisable sans mettre en oeuvre une trop grosse usine à gaz, et
> si oui, comment ?
>
> merci d'avance :-)

Bonjour Sympatix !

Un petit extrait de la MSDN Library (je ne l'avais pas vu avant que tu
poses ta question :-) )

<HTML>
<HEAD>
<HTA:APPLICATION ID="oHTA"
APPLICATIONNAME="myApp"
>
<SCRIPT>
alert("commandLine = " + oHTA.commandLine);
</SCRIPT>
</HEAD>
<BODY SCROLL="no">

</BODY>
</HTML

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

sympatix

unread,
Jul 23, 2005, 8:12:42 AM7/23/05
to
Salut !

> Un petit extrait de la MSDN Library (je ne l'avais pas vu avant que tu
> poses ta question :-) )
>
> <HTML>
> <HEAD>
> <HTA:APPLICATION ID="oHTA"
> APPLICATIONNAME="myApp"
> >
> <SCRIPT>
> alert("commandLine = " + oHTA.commandLine);
> </SCRIPT>
> </HEAD>
> <BODY SCROLL="no">
>
> </BODY>
> </HTML
>

Ce n'est pas vraiment ce que je cherche. Ton code nous retourne le path du
fichier HTA en cours.
Ce qu'il me faudrais, c'est que le path d'un *dossier déposé en paramètres*,
par un glisser-déposé, sur le fichier hta, lance d'une part ce fichier HTA,
avec les paramètres adéquats d'autre part (en l'occurence, le path du
dossier dont on a
fait le copier-coller).
En fait, c'est l'équivalent de ça (à mettre dans un fichier vbs) que je
voudrais: affichage du path du fichier déposé en paramètres:

---------------------------------
Set args = WScript.Arguments
A = args(0)
msgBox A
---------------------------------

--
Cordialement
Sympatix
(Antispam: Ôter les "toto" dans l'adresse, pour me répondre)

"Fred" <fol...@libre.france> a écrit dans le message de news:
uOg5%23m3jF...@TK2MSFTNGP14.phx.gbl...

Fred

unread,
Jul 23, 2005, 8:47:57 AM7/23/05
to
Dans son message eY8IV$3jFHA...@TK2MSFTNGP09.phx.gbl
sympatix nous dit :

> Salut !
>
>> Un petit extrait de la MSDN Library (je ne l'avais pas vu avant que
>> tu poses ta question :-) )
>>
>> <HTML>
>> <HEAD>
>> <HTA:APPLICATION ID="oHTA"
>> APPLICATIONNAME="myApp"
>> >
>> <SCRIPT>
>> alert("commandLine = " + oHTA.commandLine);
>> </SCRIPT>
>> </HEAD>
>> <BODY SCROLL="no">
>>
>> </BODY>
>> </HTML
>>
>
> Ce n'est pas vraiment ce que je cherche. Ton code nous retourne le
> path du fichier HTA en cours.

Plus les paramètres éventuels que tu lui a passés. Mais en *ligne de
commande*.

> Ce qu'il me faudrais, c'est que le path d'un *dossier déposé en
> paramètres*, par un glisser-déposé, sur le fichier hta, lance d'une
> part ce fichier HTA, avec les paramètres adéquats d'autre part (en
> l'occurence, le path du dossier dont on a
> fait le copier-coller).

Je ne sais pas si c'est possible. Peut-être en bidouillant dans les
types de fichier ?
Si cela fonctionne en ligne de commande, il doit y avoir moyen de le
faire fonctionner dans l'interface graphique.

> En fait, c'est l'équivalent de ça (à mettre dans un fichier vbs) que
> je voudrais: affichage du path du fichier déposé en paramètres:
>
> ---------------------------------
> Set args = WScript.Arguments
> A = args(0)
> msgBox A
> ---------------------------------

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

sympatix

unread,
Jul 23, 2005, 9:32:01 AM7/23/05
to
> Plus les paramètres éventuels que tu lui a passés. Mais en *ligne de
> commande*.
Oui, mais le problème, c'est qu'il faut les écrire dans le code, donc,
le cas présent, ça n'a pas d'intérêt.
C'est même l'inverse qu'il me faut.(que je récupère le paramètre de
l'extérieur).

>.../...


>Peut-être en bidouillant dans les types de fichier ?
> Si cela fonctionne en ligne de commande, il doit y avoir moyen de le faire
> fonctionner dans l'interface graphique.

En faisant l'expérience, en copiant un fichier quelconque, puis
en tentant de le coller sur un fichier HTA, le clic droit ne fait pas
apparaître l'action de coller, comme c'est le cas sur un fichier vbs. C'est
a première vue pas très bon signe !

Merci quand même, en attendant de trouver mieux, je vais contourner le
problème en utilisant IE, piloté par
un vbs.

Fred

unread,
Jul 23, 2005, 10:03:15 AM7/23/05
to
Dans son message u1Afpr4j...@TK2MSFTNGP14.phx.gbl
sympatix nous dit :

.
> En faisant l'expérience, en copiant un fichier quelconque, puis
> en tentant de le coller sur un fichier HTA, le clic droit ne fait pas
> apparaître l'action de coller, comme c'est le cas sur un fichier vbs.
> C'est a première vue pas très bon signe !

Oui, il n'y a pas de clé "DropHandler" sur les fichiers d'extension HTA
(dans le registre).
http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_int/shell_int_extending/extensionhandlers/drophandlers.asp


> Merci quand même, en attendant de trouver mieux, je vais contourner le
> problème en utilisant IE, piloté par
> un vbs.

Je crains qu'il n'y ait pas d'autre solution simple.


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

sympatix

unread,
Jul 23, 2005, 10:25:11 AM7/23/05
to
> Oui, il n'y a pas de clé "DropHandler" sur les fichiers d'extension HTA
> (dans le registre).
> http://msdn.microsoft.com/library/en-us/shellcc/platform/shell/programmersguide/shell_int/shell_int_extending/extensionhandlers/drophandlers.asp
Merci pour cette info. D'après la doc, on peut en créer, mais ça ne
m'interresse pas, je veux que mon appli fonctionne sous un window le plus
basique possible.

Je vais donc opter pour d'autres solutions.
(Peut-être que les dévellopeurs des futures versions d'MsHta, si c'est
prévu, pourrons prendre en compte cette suggestion, d'ajouter le passage
d'arguments par drag-and-drop sur le fichier)

Merci encore :-)

Do Re Mi chel La Si Do

unread,
Jul 23, 2005, 4:11:52 PM7/23/05
to
Bonsoir !


Il y a un moyen simple, si le nombre d'arguments est limité. C'est de passer
par un batch (fichier .BAT)

Par exemple :

fichier args.hta

fichier args.bat , dans le même répertoire, contenant :

args.hta %1 %2 %3 %4 %5 %6 %7 %8 %9
exit


Pour tester, on crée un icone sur args.bat, et on drag-drop depuis
l'explorateur. C'est tout.

Il y a d'autres moyens, mais légèrement plus compliqués.

@-salutations

Michel Claveau


sympatix

unread,
Jul 23, 2005, 5:13:40 PM7/23/05
to
> Bonsoir !

Les premiers essais sont concluants, je récupère bien dans une fenêtre de
commande, le path du fichier ou du dossier "glissé" sur le raccourci du bat,
et le fichier hta est bien lancé.
Mais...je ne veux pas être rabajoie, je ne vois pas du tout comment
récupérer cet argument dans ma page hta, sous forme de variable, pour
l'exploiter ensuite ?
En fait, je voudrais savoir quoi mettre dans ma page hta (dans un script, je
suppose), pour qu'à son ouverture, une variable soit affectée par la valeur
de l'argument (un truc du style: variable = Argument_depose), et dans ce
cas, le path du dossier déposé.

Merci :-)
--
Cordialement
sympatix
Antispam: Supprimer les "toto" pour me répondre


Michel Claveau

unread,
Jul 24, 2005, 2:29:28 AM7/24/05
to
Re (depuis un autre CPU)

Il te suffit de rapprocher mon astuce (mot féminin), du truc (mot masculin)
de Fred. La nature (des choses) étant bien faite, cela donnera de bons
petits résultats.

Voici le script (?) de Fred, légèrement retouché, pour répondre à ton
besoin. En le sauvant sous "args.hta", il pourra se faire draguer par
l'astuce précédente.

Michel Claveau.

___________________________________


<HTML>
<HEAD>
<HTA:APPLICATION ID="oHTA"
APPLICATIONNAME="myApp"
>

<SCRIPT language=Javascript>
var ligarg=oHTA.commandLine;

function ecritarg(){
pointe = document.getElementById('pecriture');
pointe.innerText = ligarg;
}
</SCRIPT>
</HEAD>

<BODY bgColor=#aabfbf scroll=no onload="ecritarg();">
<br>
La ligne de commande (avec arguments) est : <br>
<br><b>
&nbsp;&nbsp;<span id=pecriture>-Vide-</span>
</b><br>
</BODY>
</HTML>

Fred

unread,
Jul 24, 2005, 4:35:13 AM7/24/05
to
Dans son message e$MRPkBkF...@TK2MSFTNGP14.phx.gbl
Michel Claveau nous dit :

> Re (depuis un autre CPU)
>
> Il te suffit de rapprocher mon astuce (mot féminin), du truc (mot
> masculin) de Fred. La nature (des choses) étant bien faite, cela
> donnera de bons petits résultats.
>
> Voici le script (?) de Fred, légèrement retouché, pour répondre à ton
> besoin. En le sauvant sous "args.hta", il pourra se faire draguer par
> l'astuce précédente.
>

Bonjour Michel,
Je garde l'intégralité de ton post au risque de me faire remonter les
bretelles pour "quotage de goret" car j'apprécie beaucoup cette vision
du scripting :-)

Mais je pense que le problème de Sympatix est autre. Ce qui lui manque,
c'est l'analyse de la ligne de commande. Ton script (comme celui que
j'ai trouvé dans MSDN) renvoient toute la ligne de commande et non les
paramètres dans un tableau.
(Au passage bravo pour l'idée du bat !)

Hélas, Sympatix, je crois qu'il va falloir programmer un peu plus que
prévu ;-)
Méfie-toi des espaces dans les noms de fichiers.

Peut-être une solution avec des expressions régulières ? Attends
d'autres avis, je ne suis pas assez calé pour t'aider sur leur
utilisation dans ce cas précis (ou relance un fil à ce sujet peut-être).

[...]


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT
Outlook Express et les News : http://foleide.free.fr/prmoe.htm

sympatix

unread,
Jul 24, 2005, 5:42:56 AM7/24/05
to
> Mais je pense que le problème de Sympatix est autre.
Mais non !
C'est pile poil ce qu'il me faut !
Enfin, presque, puisqu'il faut juste passer par un fichier tiers (le bat),
alors que j'aurais aimé glisser directement le dossier à traiter *sur le
hta*, mis à part ça, ça me convient parfaitement.
Mon problème était plutôt lié au maniement du DOM, avec lequel je ne suis
par encore très familiarisé, pour récupérer la chaine de(s) l'argument(s).

Maintenant, j'ai fais la même chose, mais en passant par un fichier vbs au
lieu d'un bat, et ça marche aussi.
(c'est juste un peu plus long, mais moi j'ai mieux travailler en vbs, j'ai
été élevé là dedans, et je m'y sent plus à l'aise qu'en bat ;-))

Au final, ça donne ça:

Dans un même répertoire, on a:
1: Un fichier args.vbs
2: Un fichier args.hta (celui de Michel)

On glisse simplement le dossier à traiter sur args.vbs, et ça roule.
----------Args.vbs----------
Set Arg = Wscript.Arguments
A = arg (0)
N = WScript.ScriptFullName
Rep = Left (N, InStrRev (N, "\"))
Set oShell = CreateObject ("WScript.Shell")
oShell.Run Rep & "Args.hta " & A
----------Args.vbs----------

----------Args.hta-----------


<HTML>
<HEAD>
<HTA:APPLICATION ID="oHTA"
APPLICATIONNAME="myApp"
>

<SCRIPT language=Javascript>
var ligarg=oHTA.commandLine;

function ecritarg(){
pointe = document.getElementById('pecriture');
pointe.innerText = ligarg;
}
</SCRIPT>
</HEAD>

<BODY bgColor=#aabfbf scroll=no onload="ecritarg();">
<br>
La ligne de commande (avec arguments) est : <br>
<br><b>
&nbsp;&nbsp;<span id=pecriture>-Vide-</span>
</b><br>
</BODY>
</HTML>

----------Args.hta-----------

sympatix

unread,
Jul 24, 2005, 5:42:50 AM7/24/05
to
> Il te suffit de rapprocher mon astuce (mot féminin), du truc (mot
> masculin) de Fred. La nature (des choses) étant bien faite, cela donnera
> de bons petits résultats.
Effectivement ils s'aiment ;-)

> Voici le script (?) de Fred, légèrement retouché, pour répondre à ton
> besoin. En le sauvant sous "args.hta", il pourra se faire draguer par
> l'astuce précédente.

Oui, je confirme, il se fait bien draguer à chaque fois !
Merci de me macher le boulot...:-)
Mon problème était en fait lié au maniement du DOM pour récupérer les
infos des arguments (voir ma réponse à Fred pour plus de détails)

Donc, ça baigne !

Merci encore :-)


--
Cordialement
sympatix
Antispam: Supprimer les "toto" pour me répondre

"Michel Claveau" <m...@mclaveau.NoSpam..com> a écrit dans le message de news:
e$MRPkBkF...@TK2MSFTNGP14.phx.gbl...

Do Re Mi chel La Si Do

unread,
Jul 24, 2005, 11:20:49 AM7/24/05
to
Re

Ne t'en fait pas pour le "quotage de goret". C'est une expression utilisée
par les fanatiques usenettiens, qui confondent newsgroups et usenet, et qui
l'utilisent pour tenter de cacher les (très) nombreux problèmes de usenet,
et son inadaptation aux techniques modernes (Html, démocratie, pièces
jointes, scripting, etc.)

En tant que pratiquant assidu des newsgroups libres (comme zoo-logique), je
ne supporte usenet qu'en tant que survivance, avec le respect que l'on doit
aux notions trop âgées, avec leurs handicaps inhérents.

D'ailleurs, si quelqu'un demandait la création d'un newsgroup sur le
scripting, sur zoo-logique, j'y participerais volontiers...

@-salutations
--
Michel Claveau
mél : http://cerbermail.com/?6J1TthIa8B
sites : http://mclaveau.com http://bergoiata.org http://ponx.org
newsgroups :
news://news.zoo-logique.org/programmation.Paradox (user: zoo
passe: entrer)
news://news.zoo-logique.org/éàç`?°çïa&ô|~?§@.µ#' (user: zoo
passe: entrer)
news://news.zoo-logique.org/langages-de-programmation (user: zoo
passe: entrer)
news://claveau.dnsalias.net/ponx (user: ponx passe: ponx)
etc.

Do Re Mi chel La Si Do

unread,
Jul 24, 2005, 11:56:09 AM7/24/05
to
Re !


>>> Au passage bravo pour l'idée du bat

En fait, il y aurait d'autres moyens d'obtenir le même résultat : créer un
.EXE qui ne ferait que relayer les paramètres ; modifier le registre, pour
que Windows accepte .HTA comme extension exécutable, etc.

L'avantage du .BAT, c'est qu'il n'y a aucune modification de la config du
poste. Malheureusement, on est limité avec le nombre de paramètres (ou
alors, il faut ruser "méchant".

Les fichiers batch (.BAT) sont un peu à redécouvrir, car, depuis win-2000 et
win-XP, on a bénéficié de nombreux outils, nouveaux ou améliorés,
fonctionnant en mode console. Et puis, dans certain cas, la vitesse est
surprenante. Par exemple, j'ai essayé de récupérer le contenu d'un
répertoire, avec une demi-douzaine de langages (surtout des langages de
scripts) ; et bien, rien n'est aussi rapide que de récupérer DIR /B

Dès que les 35 h. (par jour) seront effectifs, je pondrai quelques pages
là-dessus...


@-salutations

Michel Claveau

Do Re Mi chel La Si Do

unread,
Jul 24, 2005, 12:10:04 PM7/24/05
to
Re-re...

Pour les espaces dans les noms de fichiers, pas de soucis, Windows se
chargeant d'ajouter des " (guillemets) pour encadrer les noms de
fichiers/répertoires.
Par contre, je n'ai pas testé, avec des noms de fichiers en Unicode.
Windows, en invite de commande, accroche souvent dans ce cas (même XCOPY se
plante).

re-re bon dimanche (et arrêtez ce ronflement de sieste ! Tous ces
re-re-re...)

Michel Claveau

Fred

unread,
Jul 24, 2005, 12:27:30 PM7/24/05
to
Dans son message OwtC0oGk...@TK2MSFTNGP12.phx.gbl
Do Re Mi chel La Si Do nous dit :

> Re-re...
>
> Pour les espaces dans les noms de fichiers, pas de soucis,
> Windows se
> chargeant d'ajouter des " (guillemets) pour encadrer les noms de
> fichiers/répertoires.
> Par contre, je n'ai pas testé, avec des noms de fichiers en
> Unicode.
> Windows, en invite de commande, accroche souvent dans ce cas
> (même
> XCOPY se plante).

Là j'ai testé quelque chose de vraiment surprenant.
J'avais aussi dans l'idée que cela planterait avec un nom de
fichier Unicode et un BAT.
J'ai écrit un BAT qui lance un VBS avec le paramètre qu'on lui a
passé. Le VBS affiche le paramètre que le BAT lui passe avec un
MsgBox. Programmation de haute-volée donc.
Si je dépose un fichier avec un nom Unicode sur le VBS, les
caractères sont remplacés par des points d'interrogation.
Si je dépose le même fichier sur le BAT cela *fonctionne* (le VBS
m'affiche le nom du fichier en clair !)
Alors que l'affichage des commande du BAT dans la fenêtre de
commande ne laisse apparaître que des petits rectangles.
Étonnant, non ?

Fred

unread,
Jul 24, 2005, 12:34:04 PM7/24/05
to
Dans son message OrIYxmGk...@TK2MSFTNGP09.phx.gbl

Do Re Mi chel La Si Do nous dit :

[...]

> Les fichiers batch (.BAT) sont un peu à redécouvrir, car, depuis
> win-2000 et win-XP, on a bénéficié de nombreux outils, nouveaux
> ou
> améliorés, fonctionnant en mode console. Et puis, dans certain
> cas,
> la vitesse est surprenante. Par exemple, j'ai essayé de
> récupérer le
> contenu d'un répertoire, avec une demi-douzaine de langages
> (surtout
> des langages de scripts) ; et bien, rien n'est aussi rapide que
> de
> récupérer DIR /B

Tout à fait convaincu !
Dans l'administration quotidienne j'utilise autant les fichiers
batch que les scripts.

Do Re Mi chel La Si Do

unread,
Jul 24, 2005, 2:31:28 PM7/24/05
to
Salut !


Oui, c'est étonnant. Cependant, les fichiers batch (.BAT) utilisent cmd.exe
ou command.com
Or, l'aide de cmd (cmd /?) indique un paramètre /U pour utiliser Unicode. Il
suffirait que ce paramètre soit utilisé par défaut, pour que ceci explique
cela.

Enfin, je ne suis pas sûr...


Dans le même genre, je viens d'essayer à nouveau un .BAT qui plantait, avec
des fichiers en unicode (nom en cyrillique). Et bien, maintenant, ça passe !
Je soupçonne que cela vienne du SP-2. Mais, maintenant, XCOPY passe, y
compris avec des répertoires nommés en unicode.


@-salutations

Michel Claveau

Jean

unread,
Jul 29, 2005, 3:43:52 AM7/29/05
to
> Oui, il n'y a pas de clé "DropHandler" sur les fichiers d'extension HTA

Mais on peut la créer (HKEY_CLASSES_ROOT\htafile\ShellEx\DropHandler\)
et mettre la même valeur (chaîne reg_sz) par défaut que celle utilisée
pour les fichiers js,vbs, ... :
{60254CA5-953B-11CF-8C96-00AA00B8708C}

Ou mettre celle des fichiers cmd,bat,exe, ... pour récupérer les noms
courts des fichiers :
{86C86720-42A0-1069-A2E8-08002B30309D}

Ce qui est illustré dans le fichier HTA suivant qui active (avec option
noms longs ou noms courts) ou désactive le glisser/déposer de fichiers
sur les fichiers HTA dans l'explorateur ou le bureau :

http://automation.eu.tf/HTA_Glisser_Deposer_ON_OFF.HTA
(voir code ci-dessous)

Pour tester faire glisser des fichiers sur le HTA suivant qui contient
une routine de récupération dans un tableau des chemins passés en
argument au HTA via le glisser/déposer :

http://automation.eu.tf/HTA_Glisser_Deposer_DEMO.HTA
(voir code ci-dessous)

<!---8<---HTA_Glisser_Deposer_ON_OFF.HTA---Jean-JMST-Belgium--->
<hta:application
ApplicationName='HTA Glisser Deposer'
SingleInstance='yes'
Border='none'
InnerBorder='no'
/>
<script language='vbs'>

'Active ou désactive la prise en charge
'du glisser/déposer de fichiers sur
'les fichiers HTA dans l'Explorateur ou le Bureau

Formater_Document
Ajouter_Retirer_DropHandler("")

Sub Ajouter_Retirer_DropHandler(valeur)
On Error Resume Next
clef1="HKEY_CLASSES_ROOT\htafile\ShellEx\"
clef2=clef1&"DropHandler\"
With CreateObject("WScript.Shell")
If Not valeur="" Then _
.RegWrite clef2,valeur:Exit Sub
.RegRead clef2
If Err Then
Ajouter_Formulaire
Else
.RegDelete clef2
.RegDelete clef1
Document.Write "HTA : Glisser/Déposer désactivé"
SetTimeout "Close",1500
End If
End With
On Error GoTo 0
End Sub

Sub Formater_Document
ResizeTo 250,100
Centrer 250,100
Document.Write("<body></body>")
With Document.Body.Style
.FontFamily="verdana,arial"
.FontSize="10px"
.FontWeight="bold"
.TextAlign="center"
.OverFlow="hidden"
.BackgroundColor="lavender"
.Border="2 ridge silver"
End With
End Sub

Sub Ajouter_Formulaire
Ajouter_Radio("R1").Checked=True
Document.Write "Noms Longs<br />"
Ajouter_Radio("R1")
Document.Write "Nom Courts<br /><br />"
With Ajouter_Bouton("B1")
.Value="OK"
.OnClick=GetRef("Appliquer")
End With
With Ajouter_Bouton("B2")
.Value="Annuler"
.OnClick=GetRef("Fermer")
End With
End Sub

Sub Appliquer
If R1(0).Checked Then
'Noms Longs
Ajouter_Retirer_DropHandler _
("{60254CA5-953B-11CF-8C96-00AA00B8708C}")
Else
'Noms Courts
Ajouter_Retirer_DropHandler _
("{86C86720-42A0-1069-A2E8-08002B30309D}")
End If
Document.Body.InnerText=_
"HTA : Glisser/Déposer activé"
SetTimeout "Close",1500
End Sub

Function Ajouter_Radio(nom)
With Document
Set Ajouter_Radio=_
.Body.AppendChild _
(.CreateElement("<input type=radio name="&nom&" />"))
End With
End Function

Function Ajouter_Bouton(id)
With Document
Set Ajouter_Bouton=_
.Body.AppendChild _
(.CreateElement("<input type=button id="&id&" />"))
With Ajouter_Bouton.Style
.CssText=Document.Body.Style.CssText
.Cursor="hand"
End With
End With
End Function

Sub Centrer(largeur,hauteur)
With Screen
MoveTo (.Width-largeur)/2,(.Height-hauteur)/2
End With
End Sub

Sub Fermer
Close
End Sub
</script>
<!---8<---HTA_Glisser_Deposer_ON_OFF.HTA---Jean-JMST-Belgium--->

<!---8<---HTA_Glisser_Deposer_DEMO.HTA---Jean-JMST-Belgium--->
<hta:application id='HTA' />

<script language='vbs'>
'---DEMO---
ArgHTA=Arguments_HTA
Document.Write "Les arguments sont :<br />"
For i=0 To UBound(ArgHTA)
Document.Write ArgHTA(i)&"<br />"
Next
'---DEMO---

Function Arguments_HTA
'Retourne un tableau contenant les arguments
'passés au HTA lors d'un glisser/déposer de fichiers
'sur ce HTA dans l'Explorateur ou le Bureau
'
'Voir HTA_Glisser_Deposer_ON_OFF.VBS pour activer
'ou désactiver la prise en charge du glisser/déposer
'de fichiers sur les fichiers HTA dans l'Explorateur
'ou le Bureau

arguments=_
Replace(_
HTA.commandLine,_
""""&Unescape(Location.PathName)&"""",_
""_
)
t1=Split(arguments,"""",-1,1)
For i=0 To UBound(t1)
t1(i)=Trim(t1(i))
If t1(i)<>"" Then
If UBound(Split(t1(i),":"))>1 Then
t2=Split(t1(i)," ")
For j=0 To UBound(t2)
s=s&","&t2(j)
Next
Else
s=s&","&t1(i)
End If
End If
Next
Arguments_HTA=Split(Mid(s,2),",")
End Function
</script>
<!---8<---HTA_Glisser_Deposer_DEMO.HTA---Jean-JMST-Belgium--->

Amicalement,

--
Jean - JMST
Belgium


Fred

unread,
Jul 29, 2005, 3:51:50 AM7/29/05
to
Dans le messge : mn.ea477d571a4aaae7.3499@windows,
Jean disait :

>> Oui, il n'y a pas de clé "DropHandler" sur les fichiers d'extension
>> HTA
>
> Mais on peut la créer (HKEY_CLASSES_ROOT\htafile\ShellEx\DropHandler\)
> et mettre la même valeur (chaîne reg_sz) par défaut que celle utilisée
> pour les fichiers js,vbs, ... :
> {60254CA5-953B-11CF-8C96-00AA00B8708C}
>
> Ou mettre celle des fichiers cmd,bat,exe, ... pour récupérer les noms
> courts des fichiers :
> {86C86720-42A0-1069-A2E8-08002B30309D}
>

[Le code déjà dans les archives]

Merci beaucoup. J'avais essayé de trouver quelque chose en rapport avec
mshta.
Un post précieux :-)


--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

sympatix

unread,
Jul 29, 2005, 4:17:51 AM7/29/05
to
> Mais on peut la créer (HKEY_CLASSES_ROOT\htafile\ShellEx\DropHandler\) et
> mettre la même valeur (chaîne reg_sz) par défaut que celle utilisée pour
> les fichiers js,vbs, ... :
> {60254CA5-953B-11CF-8C96-00AA00B8708C)

Génial !
Merci :-)

--
Cordialement
saint_path_x_arobase_t'es_laide_euh_point_fr

didou77

unread,
Jul 31, 2022, 11:49:29 AM7/31/22
to
Le samedi 23 Juillet 2005 à 12:51 par sympatix :
Bonjour,
Un petit utilitaire qui récupère l'argument passé au .hta
MyApp.hta "MyArg"
N'oubliez pas les guillemets
et le met dans un fichier: MyArgHTA.txt
Soit j'utilise un fichier d'échange, soit j'utilise ceci (Je maille moulte
langages différents, DOS, VB, C, Java) pour mes applications.

Dim oFSO

Dim StrComputer
Dim sCommLine
Dim c, Disp
Dim oArg



Set oFSO = CreateObject("Scripting.FileSystemObject")



StrComputer = "."
Disp = ""
c = ""


Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & StrComputer & "\root\cimv2")
Set colProcessList = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'mshta.exe'")

For Each objProcess in colProcessList
sCommLine = UCase(objProcess.CommandLine)
c = c & sCommLine & vbcrlf

sCommLine = Replace(sCommLine, Chr(34), "")
sCommLine = Trim(sCommLine)

Select Case UCase(Right(sCommLine, 3))
Case "EXE", "HTA"
Case Else
Disp = Disp & sCommLine
End Select
Next
For i = Len(Disp) To 1 Step -1
If Mid(Disp, i, 1) = " " Then Exit For
Next
oArg = Mid(Disp, i +1)



Set oMf = oFSO.CreateTextFile("MyArgHTA.txt", True)
oMf.WriteLine(Disp)
oMf.WriteLine(oArg)
oMf.Close



Set oFSO = Nothing
WScript.Quit

Michel__D

unread,
Jul 31, 2022, 1:58:49 PM7/31/22
to
Il y a beaucoup plus simple avec la propriété commandLine liée à l'Objet HTA

PS: J'espère que la personne a trouvée depuis 2005.


0 new messages