Bonjour
Je cherche un moyen d'exécuter un sous-programme externe qui me renvoie une valeur à partir d'un programme VBS.![]()
Bonjour
Je cherche un moyen d'exécuter un sous-programme externe qui me renvoie une valeur à partir d'un programme VBS.![]()
nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
pas de questions techniques par mp
je m'explique : à partir d'un programme xxxx.vbs, je souhaite exécuter un sous-programme externe yyyy.hta qui devrait me retourner une valeur vers l' appelant.
J'ai fait un essai en utilisant .exec("yyyy.hta"), mais j'ai une erreur sur celui-ci :
"yyyy.hta n'est pas une application Win32 valide."![]()
où yyyy.hta est dans le répertoire racine du disque c:
Code : Sélectionner tout - Visualiser dans une fenêtre à part .exec "mshta file://localhost/C:/yyyy.hta"
nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
pas de questions techniques par mp
Ca me plait bien mais je ne sais pas comment transmettre la valeur depuis le sous-programme yyyy.hta.
J'ai essayé aveccela me donne une erreur (sans doute parce que l'appelant est un VBS).
Code : Sélectionner tout - Visualiser dans une fenêtre à part window.returnvalue= ...
Sinon je vais passer par les registres pour stocker cette valeur de retour, afin de la récupérer dans l'appelant. (ça me parait un peu lourd, mais ça fonctionne)
je confirmecela me donne une erreur (sans doute parce que l'appelant est un VBS).
mmm, enfin un esthèteça me parait un peu lourd
edit :
mais il existe un solution qui utilise une fonction non documentée de l'objetWshScriptExecFileSystemObject, la fonction GetStandardStream
peut-être un jour un article sur l'undocumented vbs
un exemple :
le fichier test.vbs :
le script appelle le fichier test.hta situé dans "Mes documents" de l'utilisateur omen999 (à maj évidemment)
Code : Sélectionner tout - Visualiser dans une fenêtre à part MsgBox CreateObject("WScript.Shell").Exec("mshta.exe file://localhost/C:/Documents%20and%20Settings/omen999/Mes%20documents/test.hta").StdOut.ReadAll
le fichier test.hta :
le choix de l'utilisateur s'affichera dans la MsgBox du script vbs
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 <html> <HEAD> <TITLE>Modal Dialog by omen999</TITLE> <HTA:APPLICATION ID = 'IDTest' APPLICATIONNAME="Test" MAXIMIZEBUTTON="no" MINIMIZEBUTTON="no" CONTEXTMENU="no" SYSMENU="yes" SCROLL="no" > <script language="VBScript"> Sub Window_onLoad window.resizeTo 250,150 End Sub ' Sub btValid_OnClick CreateObject("Scripting.FileSystemObject").GetStandardStream(1).WriteLine "btValid clicked" window.Close End Sub Sub btAnnule_OnClick CreateObject("Scripting.FileSystemObject").GetStandardStream(1).WriteLine("btAnnule clicked") window.Close End Sub </script> </HEAD> <BODY> TEST BOITE MODALE <input type="button" value="OK" name="btValid" STYLE="position: absolute; top: 80px; left: 70px; width : 80px;" > <input type="button" value="Annuler" name="btAnnule" STYLE="position: absolute; top: 80px; left: 155px; width : 80px;" > </BODY> </html>![]()
nomen omen, nemo non omen - Consultez la FAQ VBScript et les cours et tutoriels VBScript
le plus terrible lorsqu'une voiture renverse un piéton, c'est que ce sont les freins qui hurlent. (ramón)
pas de questions techniques par mp
Je te remercie Omen pour ta prestation.
J'apprécie le dévouement sur ce forum de la part de certaines personnes.![]()
Partager