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 |