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.
Windows 10
Microsoft Edge (64 bits)
Google Chrome Version 67.0.3396.99 (Build officiel) (64 bits)
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."
Windows 10
Microsoft Edge (64 bits)
Google Chrome Version 67.0.3396.99 (Build officiel) (64 bits)
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)
Windows 10
Microsoft Edge (64 bits)
Google Chrome Version 67.0.3396.99 (Build officiel) (64 bits)
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.
Windows 10
Microsoft Edge (64 bits)
Google Chrome Version 67.0.3396.99 (Build officiel) (64 bits)
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager