Win32::Console - Console Win32 et fonctions en Mode Caractère


NOM

Win32::Console - Console Win32 et fonctions en Mode Caractère

Retour en haut de la page


DESCRIPTION

Ce module implémente les consoles Win32 avec les fonctions en mode caractère associées. Elles vous donnent le contrôle total sur l'entrée et la sortie de la console, incluant :

Ces fonctions devraient aussi permettre un portage de la bibliothèque Unix Curses; si quelqu'un est intéressé par (et/ou veut contribuer à) ce projet, qu'il m'envoie un email. Merci.

Retour en haut de la page


RÉFÉRENCE

Méthodes

Alloc
Alloue une nouvelle console au processus. Retourne undef en cas d'erreur, une valeur non nulle en cas de succès. Un processus ne peut être associé à plus d'une console, aussi cette méthode échoue s'il y a déjà une console allouée au processus. Utilisez Free pour détacher le processus de la console et puis appelez Alloc pour créer une nouvelle console. Voir aussi : Free

Exemple:

    $CONSOLE->Alloc();

Attr [attr]
Obtient et fixe l'attribut courant de la console. Cet attribut est utilisé par la méthode Write.

Exemple:

    $attr = $CONSOLE->Attr();
    $CONSOLE->Attr($FG_YELLOW | $BG_BLUE);

Cls ([attr])
Efface la console avec l'attribut attr si celui-ci est donné, ou avec ATTR_NORMAL sinon.

Exemple:

    $CONSOLE->Cls();
    $CONSOLE->Cls($FG_WHITE | $BG_GREEN);

Cursor ([x, y, taille, visible])
Obtient ou fixe la position et l'apparence du curseur. Retourne undef en cas d'erreur, ou une liste de 4 éléments contenant : x, y, taille, visible. x et y représentent la position du curseur; ...

Exemple:

    ($x, $y, $taille, $visible) = $CONSOLE->Cursor();
    # Obtenir la position seulement
    ($x, $y) = $CONSOLE->Cursor();
    $CONSOLE->Cursor(40, 13, 50, 1);
    # Fixer la position seulement
    $CONSOLE->Cursor(40, 13);
    # Fixer la taille et la visibilité sans changer la position
    $CONSOLE->Cursor(-1, -1, 50, 1);

Display
Affiche la console spécifiée à l'écran. Retourne undef en cas d'erreur, une valeur non nulle en cas de succès.

Exemple:

    $CONSOLE->Display();

FillAttr ([attribut, nombre, col, lig])
Remplie le nombre spécifié d'attributs consécutifs, commençant à col, lig, avec la valeur spécifiée dans attribut. Retourne le nombre d'attributs remplis, ou undef en cas d'erreur. Voir aussi : FillChar.

Exemple:

    $CONSOLE->FillAttr($FG_BLACK | $BG_BLACK, 80*25, 0, 0);

FillChar (char, nombre, col, lig)
Remplie le nombre spécifié de caractères consécutifs, commençant à col, lig, avec le caractère spécifié dans char. Retourne le nombre de caractères remplis, ou undef en cas d'erreur. Voir aussi : FillAttr.

Exemple:

    $CONSOLE->FillChar("X", 80*25, 0, 0);

Flush
Vide le tampon d'entrée de la console. Tous les événements contenus dans le tampon sont abandonnés. Retourne undef en cas d'erreur, une valeur non nulle en cas de succès.

Exemple:

    $CONSOLE->Flush();

Free
Détache le processus de la console. Retourne undef en cas d'erreur, une valeur non nulle en cas de succès. Voir aussi Alloc.

Exemple:

    $CONSOLE->Free();

GenerateCtrlEvent ([type, ProcessPid])
Envoie un signal d'arrêt du type spécifié au ProcessPid spécifié. type peut être l'une des constantes suivantes :
    CTRL_BREAK_EVENT
    CTRL_C_EVENT

qui indiquent respectivement l'appui sur les touches Control + Break et Control + C; si type n'est pas précisé, sa valeur par défaut est CTRL_C_EVENT. ProcessPid est le pid d'un processus partageant la même console. S'il n'est pas précisé, sa valeur par défaut est 0 (le processus courant), qui est aussi la seule valeur significative que vous pouvez passer à cette fonction. Retourne undef en cas d'erreur, une valeur non nulle en cas de succès.

Exemple:

    # arrêter ce script maintenant
    $CONSOLE->GenerateCtrlEvent();

GetEvents
Retourne le nombre d'événements en entrée non lus dans le tampon d'entrée ou undef en cas d'erreur. Voir aussi Input, InputChar, PeekInput, WriteInput.

Exemple:

    $events = $CONSOLE->GetEvents();

Info
Retourne un tableau d'information à propos de la console (ou undef en cas d'erreur), qui contient :

Voir aussi : Attr, Cursor, Size, Window, MaxWindow.

Exemple:

    @info = $CONSOLE->Info();
    print "Position du curseur : $info[3], $info[4].\n";
Input
Lit un événement depuis le tampon d'entrée. Retourne une liste de valeurs qui, en fonction de la nature de l'événement, sont :
événement du clavier
La liste contient :
événement de la souris
La liste contient :

Cette méthode retourne undef en cas d'erreur. Notez que les événements retournés dépendent du Mode d'entrée de la console; par exemple, les événements de la souris ne sont interceptés que si ENABLE_MOUSE_INPUT est spécifié. Voir aussi : GetEvents, InputChar, Mode, PeekInput, WriteInput.

Exemple:

    @event = $CONSOLE->Input();
InputChar (nombre)
Lit et retourne nombre de caractères depuis le tampon d'entrée de la console, ou retourne undef en cas d'erreur. Voir aussi : Input, Mode.

Exemple:

    $key = $CONSOLE->InputChar(1);

InputCP ([codepage])
Obtient ou fixe la page de code utilisée en entrée par la console. Notez que cela ne concerne pas un objet console, mais l'entrée de la console standard. Cet attribut est utilisé par la méthode Write. Voir aussi : OutputCP.

Exemple:

    $codepage = $CONSOLE->InputCP();
    $CONSOLE->InputCP(437);
    # vous pouvez utiliser la forme non instanciée pour éviter toute confusion :)
    $codepage = Win32::Console::InputCP();
    Win32::Console::InputCP(437);

MaxWindow
Retourne les dimensions de la fenêtre de console la plus grande possible, compte tenu de la fonte courante et des dimensions de l'écran. Le résultat est undef en cas d'erreur, une liste de deux éléments (colonne, ligne) autrement.

Exemple:

    ($maxCol, $maxRow) = $CONSOLE->MaxWindow();

Mode ([flags])
Obtient et fixe les modes d'entrée et de sortie de la console. flags peut être une combinaison des constantes suivantes :
    ENABLE_LINE_INPUT
    ENABLE_ECHO_INPUT
    ENABLE_PROCESSED_INPUT
    ENABLE_WINDOW_INPUT
    ENABLE_MOUSE_INPUT
    ENABLE_PROCESSED_OUTPUT
    ENABLE_WRAP_AT_EOL_OUTPUT

Pour plus de renseignements sur la signification de ses constantes, référez-vous, s'il vous plaît, à la Documentation Microsoft.

Exemple:

    $mode = $CONSOLE->Mode();
    $CONSOLE->Mode(ENABLE_MOUSE_INPUT | ENABLE_PROCESSED_INPUT);

MouseButtons
Retourne le nombre de boutons de votre souris, ou undef en cas d'erreur.

Exemple:

    print "Votre souris a ", $CONSOLE->MouseButtons(), " boutons.\n";

new Win32::Console (standard_handle)
new Win32::Console ([accessmode, sharemode])
Crée un nouvel objet console. La première forme crée un descripteur vers un flux standard, standard_handle, qui peut être une des constantes suivantes :
    STD_OUTPUT_HANDLE
    STD_ERROR_HANDLE
    STD_INPUT_HANDLE

La deuxième forme crée un tampon en mémoire pour l'écran de la console, auquel vous pouvez accéder pour lire et écrire comme dans une console normale, et réachemine sur la sortie standard (l'écran) avec Display. Dans ce cas, vous pouvez spécifier une ou les deux valeurs suivantes pour accessmode:

    GENERIC_READ
    GENERIC_WRITE

qui sont les autorisations que vous aurez sur le tampon créé, et une ou les deux valeurs suivantes pour sharemode :

    FILE_SHARE_READ
    FILE_SHARE_WRITE

qui changent la manière dont la console peut être partagée. Si vous ne spécifiez aucun de ces paramètres, tous les quatre indicateurs seront utilisés.

Exemple:

    $STDOUT = new Win32::Console(STD_OUTPUT_HANDLE);
    $STDERR = new Win32::Console(STD_ERROR_HANDLE);
    $STDIN  = new Win32::Console(STD_INPUT_HANDLE);
    $BUFFER = new Win32::Console();
    $BUFFER = new Win32::Console(GENERIC_READ | GENERIC_WRITE);

OutputCP ([codepage])
Obtient ou fixe la page de code utilisée en sortie par la console. Notez que cela ne concerne pas un objet console, mais la sortie de la console standard. Voir aussi : InputCP.

Exemple:

    $codepage = $CONSOLE->OutputCP();
    $CONSOLE->OutputCP(437);
    # vous pouvez utiliser la forme non instanciée pour éviter toute confusion :)
    $codepage = Win32::Console::OutputCP();
    Win32::Console::OutputCP(437);

PeekInput
Fait exactement la même chose que Input, excepté que l'événement lu n'est pas retiré du tampon d'entrée. Voir aussi : GetEvents, Input, InputChar, Mode, WriteInput.

Exemple:

    @event = $CONSOLE->PeekInput();

ReadAttr ([nombre, col, lig])
Lit le nombre spécifié d'attributs consécutifs de la console, en commençant à col, lig. Retourne les attributs lus (une variable contenant un caractère pour chaque attribut), ou undef en cas d'erreur. Vous pouvez alors passer la variable obtenue à WriteAttr pour restaurer à l'écran les attributs sauvés. Voir aussi : ReadChar, ReadRect.

Exemple:

    $colors = $CONSOLE->ReadAttr(80*25, 0, 0);

ReadChar ([nombre, col, lig])
Lit le nombre spécifié de caractères consécutifs de la console en commençant à col, lig. Retourne une chaîne contenant les caractères lus, ou undef en cas d'erreur. Vous pouvez alors passer la variable obtenue à WriteChar pour restaurer à l'écran les caractères sauvés. Voir aussi : ReadAttr, ReadRect.

Exemple:

    $chars = $CONSOLE->ReadChar(80*25, 0, 0);

ReadRect (gauche, haut, droit, bas)
Lit le contenu (caractères et attributs) du rectangle spécifié par gauche, haut, droit, bas depuis la console. Retourne une chaîne contenant le rectangle lu, ou undef en cas d'erreur. Vous pouvez passer la variable obtenue à WriteRect pour restaurer le rectangle à l'écran (ou sur une autre console). Voir aussi : ReadAttr, ReadChar.

Exemple:

     $rect = $CONSOLE->ReadRect(0, 0, 80, 25);

Scroll (gauche, haut, droit, bas, col, lig, char, attr, [cgauche, chaut, cdroit, cbas])
Déplace un bloc de données dans le tampon de la console; le bloc est identifié par gauche, haut, droit, bas, alors que col, lig précise la nouvelle position du bloc. Les emplacements laissés vides par le déplacement sont remplis par le caractère char avec l'attribut attr. Facultativement vous pouvez spécifier une région de coupure [clipping region] avec cgauche, chaut, cdroit, cbas afin que le contenu de la console à l'extérieur de ce rectangle reste inchangé. Retourne undef en cas d'erreur, une valeur non nulle en cas de succès.

Exemple:

    # fait défiler l'écran 10 lignes vers le bas, avec remplissage d'espaces noirs
    $CONSOLE->Scroll(0, 0, 80, 25, 0, 10, " ", $FG_BLACK | $BG_BLACK);

Select (standard_handle)
Redirige un flux standard vers la console spécifiée. standard_handle peut prendre l'une des valeurs suivantes :
    STD_INPUT_HANDLE
    STD_OUTPUT_HANDLE
    STD_ERROR_HANDLE

Retourne undef en cas d'erreur, une valeur non nulle en cas de succès.

Exemple:

    $CONSOLE->Select(STD_OUTPUT_HANDLE);

Size ([col, lig])
Obtient ou fixe la taille du tampon de la console.

Exemple:

    ($x, $y) = $CONSOLE->Size();
    $CONSOLE->Size(80, 25);

Title ([titre])
Obtient ou fixe le titre de la barre supérieure de la fenêtre de la console.

Exemple:

    $title = $CONSOLE->Title();
    $CONSOLE->Title("Ceci est un titre");

Window ([flag, gauche, haut, droit, bas])
Obtient ou fixe les dimensions courantes de la fenêtre de la console. Si elle est appelée sans argument, la méthode renvoie une liste de quatre éléments comprenant les coordonnées de la fenêtre courante sous la forme gauche, haut, droit, bas. Pour fixer les dimensions de la fenêtre, vous devez spécifier un paramètre flag supplémentaire : S'il est nul les coordonnées sont considérées comme relatives; s'il est non nul, les coordonnées sont absolues.

Exemple:

    ($gauche, $haut, $droite, $bas) = $CONSOLE->Window();
    $CONSOLE->Window(1, 0, 0, 80, 50);

Write (string)
Écrit la chaîne string sur la console, en utilisant l'attribut courant que vous pouvez fixer avec Attr, et fait avancer le curseur comme il est nécessaire. Ce n'est pas si différent de l'instruction «print» de Perl. Retourne le nombre de caractères écrits ou undef en cas d'erreur. Voir aussi : WriteAttr, WriteChar, WriteRect.

Exemple:

    $CONSOLE->Write("Salut tout le monde !");

WriteAttr (attrs, col, lig)
Écrit les attributs contenus dans la chaîne attrs, en commençant à col, lig, sans affecter les caractères qui sont à l'écran. La chaîne attrs peut être le résultat d'une fonction ReadAttr, ou bien vous pouvez construire votre propre chaîne d'attributs; dans ce cas, garder en mémoire que chaque attribut est traité comme un caractère et non comme un nombre (voir exemple) Retourne le nombre de caractères écrits ou undef en cas d'erreur. Voir aussi : Write, WriteChar, WriteRect.

Exemple:

    $CONSOLE->WriteAttr($attrs, 0, 0);
    # notez l'utilisation de chr()...
    $attrs = chr($FG_BLACK | $BG_WHITE) x 80;
    $CONSOLE->WriteAttr($attrs, 0, 0);

WriteChar (chars, col, lig)
Écrit les caractères contenus dans la chaîne chars, en commençant à col, lig, sans affecter les caractères qui sont à l'écran. La chaîne chars peut être le résultat d'une fonction ReadChar, ou bien une chaîne normale. Retourne le nombre de caractères écrits ou undef en cas d'erreur. Voir aussi : Write, WriteAttr, WriteRect.

Exemple:

    $CONSOLE->WriteChar("Salut tout le monde !", 0, 0);

WriteInput (event)
Pousse les données dans le tampon d'entrée de la console. (event) est une liste de valeurs; pour plus d'information, voyez Input. La chaîne de caractères peut être le résultat d'une fonction ReadChar ou bien une chaîne normale. Retourne le nombre de caractères écrits ou undef en cas d'erreur. Voir aussi : Write, WriteAttr, WriteRect.

Exemple:

    $CONSOLE->WriteInput(@event);

WriteRect (rect, gauche, haut, droit, bas)
Écrit un rectangle de caractères et attributs (contenus dans rect) dans la console, aux coordonnées spécifiées par gauche, haut, droit, bas. rect peut être le résultat d'une fonction ReadRect. Retourne undef en cas d'erreur, une liste de quatre éléments contenant les coordonnées du rectangle spécifié dans l'ordre gauche, haut, droit, bas dans le cas contraire. Voir aussi : Write, WriteAttr, WriteChar.

Exemple:

    $CONSOLE->WriteRect($rect, 0, 0, 80, 25);

Constantes

Les constantes suivantes sont exportées dans l'espace de noms principal de votre script comportant Win32::Console:

    BACKGROUND_BLUE
    BACKGROUND_GREEN
    BACKGROUND_INTENSITY
    BACKGROUND_RED
    CAPSLOCK_ON
    CONSOLE_TEXTMODE_BUFFER
    ENABLE_ECHO_INPUT
    ENABLE_LINE_INPUT
    ENABLE_MOUSE_INPUT
    ENABLE_PROCESSED_INPUT
    ENABLE_PROCESSED_OUTPUT
    ENABLE_WINDOW_INPUT
    ENABLE_WRAP_AT_EOL_OUTPUT
    ENHANCED_KEY
    FILE_SHARE_READ
    FILE_SHARE_WRITE
    FOREGROUND_BLUE
    FOREGROUND_GREEN
    FOREGROUND_INTENSITY
    FOREGROUND_RED
    LEFT_ALT_PRESSED
    LEFT_CTRL_PRESSED
    NUMLOCK_ON
    GENERIC_READ
    GENERIC_WRITE
    RIGHT_ALT_PRESSED
    RIGHT_CTRL_PRESSED
    SCROLLLOCK_ON
    SHIFT_PRESSED
    STD_INPUT_HANDLE
    STD_OUTPUT_HANDLE
    STD_ERROR_HANDLE

En complément, les variables suivantes peuvent être utilisées :

    $FG_BLACK
    $FG_BLUE
    $FG_LIGHTBLUE
    $FG_RED
    $FG_LIGHTRED
    $FG_GREEN
    $FG_LIGHTGREEN
    $FG_MAGENTA
    $FG_LIGHTMAGENTA
    $FG_CYAN
    $FG_LIGHTCYAN
    $FG_BROWN
    $FG_YELLOW
    $FG_GRAY
    $FG_WHITE
    $BG_BLACK
    $BG_BLUE
    $BG_LIGHTBLUE
    $BG_RED
    $BG_LIGHTRED
    $BG_GREEN
    $BG_LIGHTGREEN
    $BG_MAGENTA
    $BG_LIGHTMAGENTA
    $BG_CYAN
    $BG_LIGHTCYAN
    $BG_BROWN
    $BG_YELLOW
    $BG_GRAY
    $BG_WHITE
    $ATTR_NORMAL
    $ATTR_INVERSE

ATTR_NORMAL donne un premier plan gris sur un arrière-fond noir (couleurs standard du DOS).

Documentation Microsoft

La documentation pour les Consoles Win32 et fonctions en Mode Caractère peut être trouvée sur le site de Microsoft à l'URL :

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/conchar_3vg3.asp

Une référence sur les fonctions disponibles se trouve à

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dllproc/conchar_5ehx.asp

Retour en haut de la page


HISTORIQUE DES VERSIONS

Retour en haut de la page


AUTEUR

Aldo Calpini <a.calpini@romagiubileo.it>

Retour en haut de la page


CRÉDITS

Merci à : Jesse Dougherty, Dave Roth, ActiveWare, et à la communauté des utilisateurs de Perl-Win32.

Retour en haut de la page


DÉCHARGE

Ce programme est LIBRE; vous pouvez le redistribuer, le modifier, le désassembler, lui appliquer du «reverse engineering», comme vous le voulez. Néanmoins, gardez présent à l'esprit que RIEN N'EST GARANTI quant à son fonctionnement et que tout que vous faites l'est À VOS PROPRES RISQUES - Je n'assume aucune responsabilité pour aucun dommage, perte d'argent et/ou de santé qui pourraient résulter de l'utilisation de ce programme !

This is distributed under the terms of Larry Wall's Artistic License.

Retour en haut de la page


VERSION FRANÇAISE

Cette traduction française correspond à la version anglaise distribuée avec perl 5.6.1. Pour en savoir plus concernant ces traductions, consultez http://www.enstimac.fr/Perl/ .

Retour en haut de la page


TRADUCTION EN FRANÇAIS

Jean-Louis Morel <jl_morel@bribes.org>

Retour en haut de la page

 Win32::Console - Console Win32 et fonctions en Mode Caractère