Contrôler un programme dos (console)

Soyez le premier à donner votre avis sur cette source.

Vue 11 474 fois - Téléchargée 1 557 fois

Description

Ce code s'inspire très largement du code de fredlinx (http://www.vbfrance.com/code.aspx?id=6395).

Points communs :
-> lecture des sorties du programme par pipes
-> génération d'un évèment à chaque nouvelle sortie
-> possibilité de kill

Ajouts :
-> possibilité de définir le répertoire de travail du programme (pratique pour les exe qui génèrent des fichiers)
-> possibilité de séparer la sortie d'erreur standard stderr de la sortie standard stdout
-> possibilité d'entrer des données dans le programme (stdin) de deux façons :
- au démarrage
- à la demande du programme
-> récupération du code de sortie du processus
-> séparation éventuelle du nom de commande et des arguments

Plus simplement, ce code lance un exécutable DOS, redirige les entrées et sorties, déclenche un évènement à chaque sortie ou entrée.

Conclusion :


L'exécutable DOS cmd1 ne fait rien de spécial : il permet simplement de tester le code...(compilé avec DevCPP). Il demande des entrées, génère des sorties et génère un fichier dans le répertoire de travail.

Certaines sorties peuvent ne pas apparaitre suivant le compilateur utilisé pour l'appli DOS.

Tester sous Win XP

N'hésitez pas à commenter et à noter...

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
105
Date d'inscription
mardi 9 mars 2004
Statut
Membre
Dernière intervention
30 novembre 2009

Dans DosClass.cls
ret = WaitForSingleObject(hStdinLecture, 200)
'on considère que si le handle ne répond pas avant 200ms il est en attente

Ha bon? et si mon batch lance une décompression d'un fichier et que ca dure 5 secondes...
Messages postés
1
Date d'inscription
mercredi 7 juillet 2004
Statut
Membre
Dernière intervention
22 janvier 2009

Merci pour ta source qui m'a beaucoup inspirée.
Jette un oeil sur une utilisation (intéressante) que j'en ai faite

http://www.vbfrance.com/codes/VB6-MINI-CLIENT-SFTP-PUTTY-PSFTP-EXE-FRONTEND_49053.aspx
Messages postés
2676
Date d'inscription
vendredi 28 juin 2002
Statut
Membre
Dernière intervention
13 janvier 2016
14
salut,

Le problème vient surement du fait que le programme ne flush pas la sortie standard avant de prompter pour les entrèes...avec mon programme d'exemple ca marche et avec ping aussi par exemple...par contre, c'est vrai que dans mon exemple je flush le stdout avant de prompter...

ShareVB
Messages postés
345
Date d'inscription
mardi 3 juin 2003
Statut
Membre
Dernière intervention
21 mars 2008
1
Très bon code ... Une petite question cependant comment lire les données retournées par le programme dos. Je n'ai le retour des données qu'une fois le programme terminé si le programme attend des entrées . N'y a t'il pas une solution via une notion de synchrone asynchrone ?
Messages postés
28
Date d'inscription
mardi 21 septembre 2004
Statut
Membre
Dernière intervention
16 mars 2007

Exactement ce que je recherchais.

Merci pour ce code.
Afficher les 11 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.