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 :

Récupérer la valeur de retour d'une autre application


Sujet :

VBScript

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Points : 364
    Points
    364
    Par défaut Récupérer la valeur de retour d'une autre application
    Bonjour tout le monde,
    je rencontre un problème auquel je ne trouve pas de solution malgré mes recherches. Peut-être pourrez-vous éclairer ma lanterne ?
    Voilà : à partir d'un script VBS je lance un programme java censé me retourner une chaîne. Or impossible de récupérer cette valeur, tout ce que je récupère est un entier (0 en l'occurence) qui semble être une information sur la taille de la fenêtre ou quelque chose comme ça...

    J'utilise la commande WshShell.Run et je crains qu'elle ne soit pas capable de récupérer la valeur de retour...

    En gros, il s'agit d'envoyer un mot de passe à un prog java qui le retourne "crypté".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <job>
    <SCRIPT LANGUAGE="VBScript">
     
    dim varMDP, varRetour
     
    varMDP = WScript.Arguments(0)
    Set WshShell = WScript.CreateObject("WScript.Shell")
    varRetour = WshShell.Run("java -classpath "".\..\Divers\lib\Util_ebs.jar;.\..\Divers\lib\sqljdbc.jar;"" fr.util.XorCrypt " & varMDP , 1, true) 
    Wscript.echo varRetour
     
    </SCRIPT>
    </job>
    Quelqu'un voit-il une solution à mon problème ou suis-je refait ?

    Merci.

  2. #2
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Utilises les objets WMI, comme la classe Win32_Process.

    Fait une recherche sur le forum avec en mot clé Win32_Process, tu tomberas sur des sujets avec des exemples d'utilisation de la classe.

    Je précise que c'est des objets COM.

    Il semblerait que Run ne renvois que des codes d'erreurs.
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  3. #3
    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,
    tout ce que je récupère est un entier (0 en l'occurence)
    avec la syntaxe utilisée, la méthode run lance dans un nouveau process le prog java et attend sa fermeture
    pour renvoyer le code exitcodeprocess défini par le programme
    généralement une valeur nulle indique que tout s'est bien passé...

    comme il s'agit d'une valeur 32-bit, je ne vois pas très bien comment
    ton prog peut "renvoyer" une chaine dans un tel environnement
    as-tu accès au source du prog java ?
    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

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2006
    Messages
    288
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 288
    Points : 364
    Points
    364
    Par défaut
    Je vous remercie pour vos réponses.
    Finalement j'ai plus ou moins trouvé un moyen pas très élégant, mais bon...

    Je fais lancer mon java par un batch qui redirige la sortie vers un fichier txt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Code du script :
    objShell.Exec "monBatch.bat > resultat.txt"
    puis mon script (qui a lancé le batch) va ensuite lire ce fichier txt.

    Dans le batch le truc est de lancer le java avec l'option /b de manière à ce qu'il ne s'exécute pas dans une fenêtre tierce qui renverrait le résultat aux oubliettes :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Code du batch :
    start /b java -classpath etc...
    De la sorte j'arrive à récupérer la sortie texte du java.
    Bon c'est du bricolage, mais ça me dépanne.

    Désolé de n'avoir pas essayé Win32_Process comme suggéré, je manquais de temps et de connaissances.

  5. #5
    Expert confirmé
    Avatar de ced600
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Août 2006
    Messages
    3 364
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Août 2006
    Messages : 3 364
    Points : 4 061
    Points
    4 061
    Par défaut
    Regarde dans les contributions :
    WMI code generator
    Pourquoi faire compliqué lorsque l'on peut faire encore plus compliqué.

  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
    pour lire le flux de sortie, il y a beaucoup + élégant: utiliser la propriété StdOut de l'objet WshScriptExec
    l'un des auteurs de wsh 5.6 explique justement http://msdn2.microsoft.com/en-us/library/ms974613.aspx (§ Improved application control)
    que la v5.6 a introduit cette méthode Exec pour justement éviter l'utilisation de fichier texte...
    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

Discussions similaires

  1. comment récupérer la valeur des composants d'une autre application
    Par AlexTheDoctor dans le forum Windows Forms
    Réponses: 2
    Dernier message: 23/12/2009, 18h13
  2. Réponses: 4
    Dernier message: 19/01/2009, 11h12
  3. Réponses: 5
    Dernier message: 14/06/2008, 13h30
  4. [2000] Récupérer la valeur de retour d'une procédure stockée
    Par drinkmilk dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 25/08/2006, 09h46
  5. Question très bête : récupérer la valeur de retour d'une fct
    Par pekka77 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 28/10/2005, 17h57

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