IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBScript Discussion :

Equivalent de ShowModalDialog pour un VBS


Sujet :

VBScript

  1. #1
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2011
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 380
    Points : 247
    Points
    247
    Par défaut Equivalent de ShowModalDialog pour un 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)

  2. #2
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    bonjour,
    je ne vois pas trop le rapport entre le titre et le contenu du message
    la méthode Exec de l'objet WScript.Shell permet d'exécuter un programme externe et de récupérer
    les données renvoyées par l'intermédiaire de l'objet StdOut
    avec certains inconvénients : lire ici et ici
    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

  3. #3
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2011
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 380
    Points : 247
    Points
    247
    Par défaut
    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)

  4. #4
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .exec "mshta file://localhost/C:/yyyy.hta"
    où yyyy.hta est dans le répertoire racine du disque c:
    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

  5. #5
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2011
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 380
    Points : 247
    Points
    247
    Par défaut
    Ca me plait bien mais je ne sais pas comment transmettre la valeur depuis le sous-programme yyyy.hta.
    J'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    window.returnvalue= ...
    cela me donne une erreur (sans doute parce que l'appelant est un VBS).
    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)

  6. #6
    Rédacteur
    Avatar de omen999
    Profil pro
    Inscrit en
    Février 2006
    Messages
    1 296
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 1 296
    Points : 3 549
    Points
    3 549
    Par défaut
    cela me donne une erreur (sans doute parce que l'appelant est un VBS).
    je confirme
    ça me parait un peu lourd
    mmm, enfin un esthète
    edit :
    mais il existe un solution qui utilise une fonction non documentée de l'objet WshScriptExec FileSystemObject, la fonction GetStandardStream
    peut-être un jour un article sur l'undocumented vbs

    un exemple :
    le fichier test.vbs :
    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 script appelle le fichier test.hta situé dans "Mes documents" de l'utilisateur omen999 (à maj évidemment)
    le fichier test.hta :
    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>
    le choix de l'utilisateur s'affichera dans la MsgBox du script 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

  7. #7
    Membre actif
    Homme Profil pro
    retraité
    Inscrit en
    Juillet 2011
    Messages
    380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 78
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Juillet 2011
    Messages : 380
    Points : 247
    Points
    247
    Par défaut
    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)

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XSD] Equivalent du <choice> pour les attribut
    Par BigOne55 dans le forum Valider
    Réponses: 6
    Dernier message: 14/03/2014, 19h24
  2. [C#]Equivalent de SaveFileDialog pour webform
    Par Giill dans le forum ASP.NET
    Réponses: 4
    Dernier message: 05/04/2007, 09h43
  3. Equivalent à JML / JUnit pour le C++
    Par meuns dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 09/12/2004, 15h16
  4. equivalent SELECT DISTINCT pour MyBase?
    Par chrisou31 dans le forum Bases de données
    Réponses: 2
    Dernier message: 08/03/2004, 19h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo