Précédent   Forum du club des développeurs et IT Pro > Environnements de développement > WinDev > Contribuez
Contribuez Vos contributions pour la rubrique Windev : articles, cours, tutoriels, faq, comparatifs, tests, sources, ...
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 05/07/2012, 05h06   #1
jurassic pork
Membre chevronné
 
Avatar de jurassic pork
 
Bidouilleur
Inscription : décembre 2008
Messages : 379
Détails du profil
Informations professionnelles :
Activité : Bidouilleur

Informations forums :
Inscription : décembre 2008
Messages : 379
Points : 769
Points : 769
Par défaut WD : classe cConsole -> win32 Console

Cette classe est basée sur la classe WD7DOS (disponible chez sourceforge.net ici) créée par drcharly93 et romu, reprise par Nicolas Compain ici (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. Pour qu'un maximim de personnes puisse l'utiliser, j'ai écrit cette classe sous windev 9. 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
Procédure expérimentale de commande asynchrone (ne fonctionne pas pour l'instant) -> ExécuterCommandeAsync

voici un exemple d'utilisation :
Code :
1
2
3
4
5
6
7
8
9
10
MaConsole est un cConsole
MaConsole:SetCommande("ping  192.9.0.5")
MaConsole:ProcReception = "MaProcReception"
MaConsole:ProcFinCmd = "MaProcFin"
MaConsole:ExécuterCommande()
SI ChaîneOccurrence(MaConsole:SortieAnsi(),"dépassé") ALORS 
Erreur("TimeOut Ping")
SINON
	 Info(MaConsole:SortieAnsi())
FIN
Avec par exemple pour les procédures locales MaProcReception et MaProcFin :

Code :
1
2
3
PROCEDURE MaProcReception(pSortie est une chaîne)
Trace(OemToAnsi(pSortie))

Code :
1
2
3
PROCEDURE MaProcFin()
Trace("Commande win32 console  terminée")
Si vous avez une version de windev qui exploite les entiers système ( pour version 32 64 bits) il faut enlever les commentaires dans entier //système (windev 9 ne gérait pas les entiers système).


Si vous avez des remarques à faire, des améliorations ou des corrections à apporter, des bugs à signaler faites le en forum et pas dans la contribution pour ne pas la "polluer" .

Ceci est la version bêta 0.1 de la classe cConsole. Elle est fournie comme cela (as is). L'utilisation de cette classe est à vos risques et périls et je ne saurais être responsable des problèmes ou des préjudices rencontrés.

Ami calmant, J.P
Fichiers attachés
Type de fichier : zip cConsole_version_0_1_beta.zip (24,0 Ko, 6 affichages)
jurassic pork est déconnecté   Envoyer un message privé Réponse avec citation 20
Vieux 09/07/2012, 05h11   #2
jurassic pork
Membre chevronné
 
Avatar de jurassic pork
 
Bidouilleur
Inscription : décembre 2008
Messages : 379
Détails du profil
Informations professionnelles :
Activité : Bidouilleur

Informations forums :
Inscription : décembre 2008
Messages : 379
Points : 769
Points : 769
Par défaut version 1.0

voici une nouvelle mouture de la classe
changements :
// version 1.0 Jurassic.Pork - 9 juillet 2012
la version est compatible 32 bits 64 bits.
les noms des méthodes ont changé (plus courtes).
Modification de la méthode ExécuterCmdAsync utilisation d'un ExécuterCmd lancé dans un threadExécute.
Ajout du numéro de version en constante (cConsole::Version).
Correction de la méthode d'arrêt.
Les procédures ExécuterCmdAsync et ExécuterCmd renvoient maintenant le code Retour de la commande ou un code d'erreur interne.
Amélioration des performances de lecture du pipe en utilisant un buffer de 4096 octets (au lieu de 256).

la version minimum sera windev 12 car en windev 9 j'avais un problème avec le threadexécute sur une méthode de classe. En plus comme cela la version est compatible 32 bits 64 bits.
J'ai mis un projet exemple dans le dépôt PCSOFT ici

Ami calmant, J.P
Fichiers attachés
Type de fichier : zip cConsole_ version1_0_WD12.zip (9,8 Ko, 15 affichages)
jurassic pork est déconnecté   Envoyer un message privé Réponse avec citation 30
Réponse
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 22h36.


 
 
 
 
Partenaires

Hébergement Web