Bonjour
Je cherche un moyen d'exécuter un sous-programme externe qui me renvoie une valeur à partir d'un programme VBS.:?
Version imprimable
Bonjour
Je cherche un moyen d'exécuter un sous-programme externe qui me renvoie une valeur à partir d'un programme VBS.:?
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:.exec "mshta file://localhost/C:/yyyy.hta"
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: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:ccool:)
je confirme :PCitation:
cela me donne une erreur (sans doute parce que l'appelant est un VBS).
mmm, enfin un esthète :ccool:Citation:
ç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 :roll:
un exemple :
le fichier test.vbs :
le script appelle le fichier test.hta situé dans "Mes documents" de l'utilisateur omen999 (à maj évidemment)Code: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 :mrgreen:Code:
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>
Je te remercie Omen pour ta prestation.:ccool:
J'apprécie le dévouement sur ce forum de la part de certaines personnes.:)