begin process at 2012 02 11 02:19:15
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

API

 > ECRIRE EN COULEUR SUR LA CONSOLE

ECRIRE EN COULEUR SUR LA CONSOLE


 Information sur la source

Note :
10 / 10 - par 3 personnes
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :API Source .NET ( DotNet ) Classé sous :console, couleur Niveau :Initié Date de création :31/12/2003 Vu / téléchargé :17 240 / 322

Auteur : vieuxLion

Ecrire un message privé
Commentaire sur cette source (2)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
En réponse à un message, voici une façon simple d'égayer (décorer) les programmes console. Assembly Helper et code de test.
Comme il n'existe rien en DOTNET pour ce faire, on va recourir aux APIs natives (Win32) et utiliser la technologie P/Invoke

1) Il faut déjà récupérer un handle sur la console
Il n'existe rien en DOTNET pour ce faire, on va recourir aux APIs natives (Win32)
HANDLE GetStdHandle(  DWORD nStdHandle );

convertie en C# avec utilisation de la technologie P/Invoke (Interop)
[DllImportAttribute("Kernel32.dll")]
p rivate static extern int GetStdHandle( int nStdHandle );

2) Il faut ensuite appliquer les attributs désirés
BOOL SetConsoleTextAttribute(
  HANDLE hConsoleOutput,
  WORD wAttributes
);

convertie en C#
[DllImportAttribute("Kernel32.dll")]
private static extern bool SetConsoleTextAttribute
(int hConsoleOutput, int wAttributes );

3) Voici donc un exemple simpliste :
const int STD_OUTPUT_HANDLE = -11;
int couleur = 6; //jaune
Console.Write("Un programme console en ");
SetConsoleTextAttribute(console, couleur);
Console.Write("... Couleur ");
SetConsoleTextAttribute(console, couleur+8);
Console.WriteLine("... brillante");

4) Il faudrait encapsuler les couleurs (fond et texte), ainsi que la fonctionnalité
de récupération des attributs de la console "GetConsoleScreenBufferInfo" dans une classe
par exemple : ConsoleCouleurHelper

Voici le début de la conception de cette classe

Importation des structures et des fonctions API dans la classe
Définition d'énumérations pour les couleurs (fond et texte)

Récupération des informations de la console dans le Ctor
Fonction de restauration des attributs d'origine
Fonction de modification des couleurs

Packaging en librairie ConsoleCouleur.DLL

Source

  • //voici le code de l'exemple minimal
  • using System;
  • using System.Runtime.InteropServices;//pour DllImport
  • class TestCouleur
  • {
  • const int STD_OUTPUT_HANDLE = -11;
  • //les imports pour récupérer le handle de la console et modifier les attributs d'écriture
  • [DllImportAttribute("Kernel32.dll")]
  • private static extern int GetStdHandle( int nStdHandle );
  • [DllImportAttribute("Kernel32.dll")]
  • private static extern int SetConsoleTextAttribute
  • (int hConsoleOutput, int wAttributes );
  • [STAThread]
  • static void Main(string[] args)
  • {
  • int console = GetStdHandle(STD_OUTPUT_HANDLE);
  • int couleur = 5; //bleu
  • int couleurFond = 0x0080 /*brillant*/+0x0060/*Jaune*/;
  • Console.Write("Un programme console en ");
  • SetConsoleTextAttribute(console, couleur);
  • Console.Write("... Couleur ");
  • SetConsoleTextAttribute(console, couleur+8/*brillant*/);
  • Console.Write("... brillante");
  • SetConsoleTextAttribute(console, couleur+couleurFond);
  • Console.WriteLine("... avec fond");
  • SetConsoleTextAttribute(console, 7 /*blanc*/);
  • }
  • }
//voici le code de l'exemple minimal

using System;
using System.Runtime.InteropServices;//pour DllImport


class TestCouleur
{
	const int STD_OUTPUT_HANDLE = -11;
	//les imports pour récupérer le handle de la console et modifier les attributs d'écriture
	[DllImportAttribute("Kernel32.dll")]
	private static extern int GetStdHandle( int nStdHandle );

	[DllImportAttribute("Kernel32.dll")]
	private static extern int SetConsoleTextAttribute
		(int hConsoleOutput, int wAttributes );

	[STAThread]
	static void Main(string[] args)
	{
		int console = GetStdHandle(STD_OUTPUT_HANDLE);
		int couleur = 5; //bleu 
		int couleurFond = 0x0080 /*brillant*/+0x0060/*Jaune*/;
		Console.Write("Un programme console en ");
		SetConsoleTextAttribute(console, couleur);
		Console.Write("... Couleur ");
		SetConsoleTextAttribute(console, couleur+8/*brillant*/);
		Console.Write("... brillante");
		SetConsoleTextAttribute(console, couleur+couleurFond);
		Console.WriteLine("... avec fond");
		SetConsoleTextAttribute(console, 7 /*blanc*/);
	}
}

 Conclusion

la solution contient 4 projets

TestSimple : autonome et minimal
TestCouleur1 : autonome
ConsoleCouleur : la librairie utilisée par le suivant
TestCouleur2 : test utilisant la librairie précédente

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Sources du même auteur

Source avec Zip Source avec une capture Source .NET (Dotnet) JEU DE TAQUIN (POUR PDA)
Source avec Zip Source avec une capture Source .NET (Dotnet) UTILISER LES 3 TECHNIQUES DE SÉRIALISATION DOTNET ET "VOIR" ...
Source avec Zip Source avec une capture Source .NET (Dotnet) LIRE LE CONTENU DE CONTRÔLES TEXTBOX, RICHEDIT,... D'AUTRES ...
Source avec Zip Source .NET (Dotnet) TRAVAIL SUR LES BASES DE DONNÉES, LES DATASETS ET LES FICHIE...
Source .NET (Dotnet) RENDRE STATEFULL UN WEB SERVICE

 Sources de la même categorie

Source avec Zip Source avec une capture Source .NET (Dotnet) GETSYSTEMTIME ET SETSYSTEMTIME par Arnotic
Source avec Zip Source avec une capture Source .NET (Dotnet) [SILVERLIGHT] UN GÉNÉRATEUR INTERACTIF D'ARBRES DE HUFFMAN par loudadyassine
Source avec Zip Source .NET (Dotnet) [C#2008] OBSERVER L'ACTIVITÉ INPUT (CLAVIER SOURIS) DE L'UTI... par PCPT
Source avec Zip Source avec une capture Source .NET (Dotnet) UTILISATION DE L'API VIRTUAL DISK IMAGE DE WINDOWS 7 par Willi
Source avec Zip Source .NET (Dotnet) CHESS GAME CORE - LIBRAIRIE JEU D'ÉCHEC EN C# par Bidou

 Sources en rapport avec celle ci

Source avec Zip Source .NET (Dotnet) CLONE/FORK DES FLUX DE LA CONSOLE : PERMETTRE LA REDIRECTION... par ShareVB
Source avec Zip Source avec une capture (CONSOLE) TROUVER LA CLEF D'UN CODE INSEE EN DONNANT SES 13 ... par Maxime95k
Source avec Zip Source .NET (Dotnet) BALLON, CAREE ET IMAGE QUI TOURNENT, SE GONFLENT ET SE DGONF... par zertyx
Source .NET (Dotnet) GREP POUR WINDOWS par Warny
Source .NET (Dotnet) CONSOLE EN COULEUR par yoannd

Commentaires et avis

Commentaire de seboss le 01/01/2004 23:53:20

dans le prochain framework 1.2 c'est incorporé dans la classe system;
peace
sebeuh

Commentaire de Bidou le 12/06/2006 09:28:07 administrateur CS

Dans le framework 2.0, c'est intégrer dans la Class Console :
          
     Console.BackgroundColor =  ConsoleColor.Black;
     Console.ForegroundColor = ConsoleColor.DarkGreen;
     Console.WriteLine("Test");

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Redirection de Console.WriteLine [ par scoubidou944 ] bonjour,comme mon ami Google  semble vexé aujourd'hui, je viens chercher refuge ici.Si dans un même projet en mode console, on veut hooker les appels [Grand débutant] Programme en tâche de fond trop lourd [ par jdalbert ] Bonjour,J'ai fait un programme C# qui vérifie toutes les minutes l'arrivée de nouveaux mails et je voudrais le faire exécuter en tâche de fond, i.e. q Utilisation d'une variable locale non assignée 'TVA' [ par BadSnip ] Bonjour, Je suis étudiant en BTS de 1ere année et je commence simplement a apprendre le C#.J'ai recherché sur ce site et bien d'autre si quelqu'un ava .NET C# Application console [ par Seth75 ] Bonjour, Je voudrais savoir comment faire pour sauvegarder le contenu d'un fichier csv dans un fichier txt dans une application console car en web c'e Changer la propriété BackColor d'un controle avec une couleur perso [ par Makia ] Bonjour à tous et voici mon souci ^^J'ai une application qui récupère en permanence la couleur que pointe la souris ( il en ressort un objet de type C probleme IF en C# [ par lucab03 ] j'ai un probleme avec les if, il ne sont paas pris en compte. si vous avez une solution. Merci int age=0;            int Nbe=0;            int Nbep20= Images sans couleur [ par xmox667 ] Salut à tous,J'ai des images au format png que j'ai fait avec photosphop cs3.Je les utilises dans des boutons. Dans le designer de vs 2008 pas de souc Couleur transparente [ par LordOfTheShadow ] Hello,Je me traîne un probleme depuis un petit moment... J'ai créé un UserControl sur lequel je dessine (ce n'est pas une Bitmap c'est un Graphics). U Winform : control transparent [ par t00f ] Bonjour à tous,Je viens vers vous car j'ai un soucis que je n'arrive pas à résoudre malgré mes recherches sur Internet :J'essaie de créer un control c vérification de l'existence de fichier.txt [ par suethi75 ] Bonsoir tout le monde,Voilà je suis en train de créer un qcm, le candidat doit s'inscrire ( sous forme nom.prénom.txt). Cependant je dois vérifier si


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,952 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales