Comment récupérer la valeur de retour d'un exécutable lancé via la commande shel

bouchitostati Messages postés 18 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 8 janvier 2014 - 4 nov. 2011 à 14:56
bouchitostati Messages postés 18 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 8 janvier 2014 - 4 nov. 2011 à 17:44
Bonjour.

Ma question :
Comment récupérer la valeur de retour d'un exécutable lancé via la commande shell ?
Je suis sous VB6.

voici en gros ce que je fais.

dim valretour as long
valretour = Shell("C:\monexe.exe")

monexe.exe me renvoie 0 si tout est ok sinon 1
J'aimerai pouvoir récupérer cette fameuse valeur.

Merci de votre aide.

2 réponses

cs_Jack Messages postés 14007 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 78
4 nov. 2011 à 17:38
Salut

Regarde voir si les sources qui parlent de "pipe" peuvent t'aider.
Un pipe est une méthode pour récupérer les sorties consoles d'un programme; ce n'est peut être pas vraiment ce que tu cherches, mais essaye voir.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
0
bouchitostati Messages postés 18 Date d'inscription vendredi 26 septembre 2008 Statut Membre Dernière intervention 8 janvier 2014
4 nov. 2011 à 17:44
Je te remercie de ta réponse. Mais ce n'est effectivement pas cela que je recherchais.

Je viens de trouver en cherchant pas mal sur le site.

Voici en gros une fonction shel revitée avec récupération du code retour de l'exécutable lancé via une commande shell standard.
Cela peut servir à d'autres je pense.

Ne pas oublier d'inclure les api win32 openprocess, getexitcodeprocess et les variables PROCESS_QUERY_INFORMATION, STILL_ACTIVE

Public Function ShellWait(ByVal JobToDo As String) As Long
Dim hProcess As Long, RetVal As Long

RetVal = -1
hProcess = OpenProcess(PROCESS_QUERY_INFORMATION, False, Shell(JobToDo, vbNormalFocus))

Do
GetExitCodeProcess hProcess, RetVal
DoEvents
Sleep 100
Loop While RetVal = STILL_ACTIVE

ShellWait = RetVal

End Function
0