PC SOFT
DEPOT EN LIGNE
POUR WINDEVWEBDEV ET WINDEV MOBILE

classe cConsole (exploitation console windows)
Publié par Jurassic Pork
dans la catégorie Outils
Nouveautés
Description
Cette classe est basée sur la classe WD7DOS créée par drcharly93 et romu, reprise par Nicolas Compain (adaptation 32 bits 64 bits). Elle permet d'exécuter des commandes win32 console (et non pas DOS comme on a toujours tendance à le dire) sans qu'une fenêtre s'ouvre pour l'utilisateur et avec possibilité d'exploiter le texte renvoyé par la commande.
Par rapport à la classe WD7DOS elle apporte les modifications suivantes :
Définition de procédures de réception et de fin de commande -> ProcReception ProcFinCmd
Gestion de la conversion de texte OEM vers ANSI (pour les problèmes d'accents en particulier) -> SortieAnsi
Une procédure de lecture de l'état de la commande -> LireEtat
Le code Retour de la commande ou un code d'erreur interne est renvoyé.
Une méthode d'exécution en mode asynchrone en utilisant un thread -> ExécuterCmdAsync.
Amélioration des performances du pipe de lecture en utilisant un buffer de 4096 octets (au lieu de 256).

En mode d'exécution normale (ExécuterCmd) des procédures sont disponibles :
1 - procReception pour lire à la volée ce qu'envoie la commande exécutée.
2 - procFinCmd quand la commande est terminée.

En mode d'exécution asynchrone (ExécuterCmdAsync) les procédures précédentes ne fonctionnent pas. L'avantage du mode asynchrone c'est de ne pas geler l'IHM en cas d'exécution de commande avec blocage en attente de timeout (comme par exemple un "net use" sur une machine qui ne répond pas).

Une méthode d'arrêt (ArrêterCmd) permet d'interrompre une commande en cours.

En cas de commande native de l'interpréteur de commande comme par exemple "dir" ne pas oublier de mettre "cmd /c " avant la commande.

La classe est fournie comme cela (as is). L'utilisation de cette classe est à vos risques et périls et je décline toute responsabilité en cas de problèmes ou de préjudices rencontrés.

Pour illustrer ceci un projet exemple (en Windev 12 pour que l'on puisse l'utiliser à partir de windev 12) contenant la classe cConsole est fourni.


Illustrations, copies d'écran
none
none
Avis des utilisateurs
(Pour noter la ressource, cliquez sur Ecrire un avis)
meftah
comment intégrer la bibliothèque OpenCv dans windev.
IDV-LOGICIEL
j'ai une ligne de commande avec le caractère "&" a passer et il n'en veux pas avec la class
en ligne de commande sous PowerShell sa passe sans problème ...
Invoke-RestMethod -Uri "https://maps.googleapis.com/maps/api/elevation/json?locations=43.78653466533594,3.533297211608888&key=uneclégooglevalide"

c'est le & qu'il ne veux pas dans la class ?
MJMS Informatique
Bonjour, j'utilise cette class, mais une fois le projet fini, j'ai passé l'application en unicode car j'ai des caractères de différent pays, et la elle ne fonctionne pas, message renvoyé : Erreur dans CreateProcessA. Possibilité : Fichier ou commande non trouvé.

Une solution pour convertir la class en unicode ?
Nicolas COMPAIN
@DrCharly93 il n’y a pas de quoi. Je ne savais même pas qu'elle avait été reprise ici. Je viens de le découvrir.
J'en profite pour vous remercier également.
Jurassic Pork
Contrairement à ce que j'indique dans la description les procédures procReception et procFinCmd fonctionnent en mode asynchrone. Il faut les utiliser dans des procédures globales et non locales.
DrCharly93 (WDForge.
Merci pour cette évolution
A PROPOS
EVALUATION :
51(1)
TELECHARGEMENTS :
1 856
PUBLIÉE :
09 juillet 2012
VERSION :
CONCERNE :
WINDEV
Version minimale : WD12 et +
TAILLE :
148,1 Ko
DU MÊME DÉVELOPPEUR