Recopier l'output d'un fichier executable

abessoloclaude Messages postés 40 Date d'inscription lundi 14 décembre 2015 Statut Membre Dernière intervention 11 janvier 2016 - 4 janv. 2016 à 22:19
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 5 janv. 2016 à 11:00
Bonjour,



je souhaiterais savoir comment recuperer le resultat d'un fichier executable que j'ai lancé avec la commande shell. jutilise VBscript .
je vous ai envoye le resultat du fichier exécuté.
merci

3 réponses

abessoloclaude Messages postés 40 Date d'inscription lundi 14 décembre 2015 Statut Membre Dernière intervention 11 janvier 2016
5 janv. 2016 à 08:46
personne ne sait toujours pas comment recuperer ce qui s'affcihe dans le fichier exécutable que jai lancé?
jai essayé plusieurs fois mais ca ne marche pas. je souhaiterais mettre le texte dans un textebox,jutilise vba
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 344
5 janv. 2016 à 10:36
Bonjour,

jutilise vba


Alors que dans l’énoncé de la question :

jutilise VBscript .


Faudrait savoir ....... !!!!!!!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 5/01/2016 à 10:21
Bonjour,
Et tout cela depuis ...VBS....
Je ne crois que tu n'as pas la moindre idée de ce que sont des processus, des mécanismes, des fils distincts.
Alors : ou l'exécutable que tu appelles accepte l'automation (= a été conçu pour) et tu pourras dialoguer avec lui, le piloter', etc ... ou il ne l'accepte pas et tu n'arriverais (et encore ... pas toujours) à de telles fins que d'une manière si complexe (utilisation de plusieurs fonctions de l'API de Windows) qu'elle te "coûterait" probablement plus cher que d'écrire toi-même, dans ton appli, les instructions qui aboutiraient au résultat de l'exécutable que tu veux "utiliser" !

Pour que tu comprennes : comment ferais-tu pour savoir où en est exactement la livraison, par le chauffeur C de l'entreprise E, d'un colis que tu as demandé à l'entreprise E de livrer à l'adresse A, si le chauffeur C ne rend compte qu'à l'entreprise E et que l'entreprise E n'a rien prévu pour t'en rendre compte, à toi ?
Voilà ...
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
0
abessoloclaude Messages postés 40 Date d'inscription lundi 14 décembre 2015 Statut Membre Dernière intervention 11 janvier 2016
5 janv. 2016 à 10:35
recuperer l'output d'un fichier exec avec vbscript:

set objShell = CreateObject("WScript.Shell" )
commande = "c:\tmp\essai.bat
Set objExecObject = objShell.Exec(commande)

Do While Not objExecObject.StdOut.AtEndOfStream
strText = objExecObject.StdOut.ReadLine()
...
Loop
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 6/01/2016 à 08:12
C'est vraiment malheureux à dire, mais voilà où conduisent les imprécisions :
Ce n'est pas du tout :
le resultat d'un fichier executable

ni
ce qui s'affcihe dans le fichier exécutable

mais ce qu'un batch affiche en exécution sur la console !
Ta solution est alors une simple redirection.
Sous VBA (puisque tu dis maintenant développer sous VBA), un tel "pipe" s'écrit ainsi (exemple) ===>>
Shell ("D:\toto.bat > D:\titi.txt")

Bref ...

Ainsi par exemple soit toto.bat :
@echo off
echo blabla
exit


Shell ("D:\toto.bat > D:\titi.txt")

écrira "blabla" dans D:\titi.txt, que tu pourras lire à ta guise avec Open

Quelle "affaire" ... pour finalement utiliser ... du DOS

EDIT : juste pour ton information (pour le cas où cela t'aurait échappé) maintenant :
l'utilisation de VBS (y compris donc depuis VBA) est à éviter si tu dois distribuer ton application. Des raisons de sécurité ont en effet conduit un nombre important d'utilisateurs (dont moi-même) à inhiber VBS sur leur machine.
EDIT 2 : je ne sais pas à quoi te sert l'affichage de l'exécution de ton Batch.
A tout hasard, donc (notamment dans l'éventualité de la conservation en mémoire des résultats successifs) : Le remplacement du signe ">" de redirection (dans le code montré) par le signe ">>" aurait pour résultat d'ajouter un résultat en fin du fichier texte, sans donc y supprimer les résultats antérieurs.
0
Rejoignez-nous