• 1

Commande en console windows invisible

Note utilisateur:  / 12
MauvaisTrès bien 

Lancer une commande de console windows : cWDDos devient PRJ_CLA_Console.

Initié par DrCharly93 pour WDForge.org, il a été successivement amélioré par :

  • Nicolas COMPAIN qui a apporté le support 64 Bits.
  • Jurassic Pork qui sensiblement facilité la prise en main de la classe en décrivant des procédure de réception du résultat et de la fin de la commande.

Commande en console windows

De retour sur WDForge, PRJ_CLA_Console est proposé en WinDev 20 et ses nouveautés :

  • Application de la charte de programmation qui permet de préfixer les membres de la classe selon leurs types.
  • Utilisation de l'abonnement de procédure au constructeur.

WinDev 14 a vu arrivé un nouveau type de variable : procédure

Outre la foncitonnalité du projet, nous illustrons avec cette évolution l'usage du type "procédure" en programmation orientée objet.

Il est donc possible de créer un membre de type procédure à une classe.

Si le membre n'est pas affecté, il prend la valeur null. Sinon, il se transforme en un pointeur vers la procédure.

Nous appelons cette possibilité l'abonnement de procédure.

Si le membre est renseigné, on peut appeler depuis une méthode de la classe, une procédure fournie... et donc hors de portée.


Il devient alors possible de "personnaliser" des comportements d'objets selon leur environnement.

Dans le cas de CLA_Console, on personnalise la valeur de retour de la commande ainsi que la terminaison (erreur ou pas) de la commande :


// Déclaration de CLA_Console
mproc_Reception    est une Procédure
mproc_FinCmd       est une Procédure

// Affectation des procédures abonnées. Si nécessaire on prend référence sur une procédure qui n'est pas dans la classe... qui pourra être lancée le cas échéant.
PROCEDURE Constructeur(lproc_Reception est une Procédure = Null, lproc_FinCmd est une Procédure = Null)
SI lproc_Reception<>Null ALORS :mproc_Reception = lproc_Reception
SI lproc_FinCmd<>Null ALORS :mproc_FinCmd = lproc_FinCmd

// Exécute la procédure de terminaison de la ligne de commande (procédure abonnée)
PROCEDURE ExécuterCmd()
//... Fin de méthode, après avoir récupéré le code de sortie de la commande
SI :mproc_FinCmd<>Null ALORS :mproc_FinCmd()

Commande exécutée

image image