| Win32::Console - Console Win32 et fonctions en Mode Caractère |
Win32::Console - Console Win32 et fonctions en Mode Caractère
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.
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();
Exemple:
$attr = $CONSOLE->Attr();
$CONSOLE->Attr($FG_YELLOW | $BG_BLUE);
Exemple:
$CONSOLE->Cls();
$CONSOLE->Cls($FG_WHITE | $BG_GREEN);
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);
undef en cas d'erreur,
une valeur non nulle en cas de succès.
Exemple:
$CONSOLE->Display();
undef en cas d'erreur.
Voir aussi : FillChar.
Exemple:
$CONSOLE->FillAttr($FG_BLACK | $BG_BLACK, 80*25, 0, 0);
undef en cas d'erreur.
Voir aussi : FillAttr.
Exemple:
$CONSOLE->FillChar("X", 80*25, 0, 0);
undef en cas d'erreur, une valeur
non nulle en cas de succès.
Exemple:
$CONSOLE->Flush();
undef en cas d'erreur,
une valeur non nulle en cas de succès. Voir aussi Alloc.
Exemple:
$CONSOLE->Free();
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();
undef en cas d'erreur.
Voir aussi Input, InputChar, PeekInput, WriteInput.
Exemple:
$events = $CONSOLE->GetEvents();
undef
en cas d'erreur), qui contient :
Write.
colonne de gauche (X du point de départ) de la fenêtre courante de la console.
ligne du haut (Y du point de départ) de la fenêtre courante de la console.
colonne de droite (X du point final) de la fenêtre courante de la console.
ligne du bas (Y du point final) de la fenêtre courante de la console.
nombre maximum de colonnes pour la fenêtre de la console, compte tenu de
la taille du tampon, de celle de la fonte et de la dimension de l'écran.
nombre maximum de lignes pour la fenêtre de la console, compte tenu de
la taille du tampon, de celle de la fonte et de la dimension de l'écran.
Voir aussi : Attr, Cursor, Size, Window, MaxWindow.
Exemple:
@info = $CONSOLE->Info();
print "Position du curseur : $info[3], $info[4].\n";
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();
undef en cas d'erreur.
Voir aussi : Input, Mode.
Exemple:
$key = $CONSOLE->InputChar(1);
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);
undef en cas d'erreur, une liste de deux éléments (colonne, ligne)
autrement.
Exemple:
($maxCol, $maxRow) = $CONSOLE->MaxWindow();
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);
undef en cas d'erreur.
Exemple:
print "Votre souris a ", $CONSOLE->MouseButtons(), " boutons.\n";
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);
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);
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();
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);
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);
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);
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);
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);
Exemple:
($x, $y) = $CONSOLE->Size();
$CONSOLE->Size(80, 25);
Exemple:
$title = $CONSOLE->Title();
$CONSOLE->Title("Ceci est un titre");
Exemple:
($gauche, $haut, $droite, $bas) = $CONSOLE->Window();
$CONSOLE->Window(1, 0, 0, 80, 50);
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 !");
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);
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);
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);
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);
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).
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
Aldo Calpini <a.calpini@romagiubileo.it>
Merci à : Jesse Dougherty, Dave Roth, ActiveWare, et à la communauté des utilisateurs de Perl-Win32.
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.
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/ .
Jean-Louis Morel <jl_morel@bribes.org>
| Win32::Console - Console Win32 et fonctions en Mode Caractère |