Publicité
+ Répondre à la discussion
Affichage des résultats 1 à 3 sur 3
  1. #1
    Membre Expert Avatar de jurassic pork
    Bidouilleur
    Inscrit en
    décembre 2008
    Messages
    500
    Détails du profil
    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : décembre 2008
    Messages : 500
    Points : 1 059
    Points
    1 059

    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 Fichiers attachés

  2. #2
    Membre Expert Avatar de jurassic pork
    Bidouilleur
    Inscrit en
    décembre 2008
    Messages
    500
    Détails du profil
    Informations professionnelles :
    Activité : Bidouilleur

    Informations forums :
    Inscription : décembre 2008
    Messages : 500
    Points : 1 059
    Points
    1 059

    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 Fichiers attachés

  3. #3
    Membre éclairé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    octobre 2008
    Messages
    397
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Boutique - Magasin

    Informations forums :
    Inscription : octobre 2008
    Messages : 397
    Points : 305
    Points
    305

    Par défaut

    Super mec, c'est exactement ce que je voulais

Liens sociaux

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •