Bonjour,
Je cherche à modifier la couleur de fond d'une application console.
Pas uniquement le fond du texte affiché, donc Console.BackgroundColor ne me conviens pas.
En fouillant sur le net j'ai trouvé un bout de code que j'ai du retravailler car il ne compilait pas.
Sauf qu'il n'a aucun effet.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71 using System; using System.Runtime.InteropServices; namespace ConsoleBackgroundColor { class Program { [DllImport("kernel32.dll", SetLastError = true)] static extern bool SetConsoleScreenBufferInfoEx(IntPtr hConsoleOutput, ref CONSOLE_SCREEN_BUFFER_INFOEX csbiex); [StructLayout(LayoutKind.Sequential)] struct CONSOLE_SCREEN_BUFFER_INFOEX { public uint cbSize; public COORD dwCursorPosition; public ushort wAttributes; public SMALL_RECT srWindow; public COORD dwMaximumWindowSize; public ushort wPopupAttributes; public bool bFullscreenSupported; public COLORREF ColorRefs; } [StructLayout(LayoutKind.Sequential)] struct COORD { public short X; public short Y; } [StructLayout(LayoutKind.Sequential)] struct SMALL_RECT { public short Left; public short Top; public short Right; public short Bottom; } [StructLayout(LayoutKind.Sequential)] struct COLORREF { public uint ColorValue; } static void Main(string[] args) { IntPtr hConsoleOutput = GetStdHandle(-11); CONSOLE_SCREEN_BUFFER_INFOEX csbiex = new CONSOLE_SCREEN_BUFFER_INFOEX(); csbiex.cbSize = (uint)Marshal.SizeOf(csbiex); // Obtenir les informations actuelles de la console GetConsoleScreenBufferInfoEx(hConsoleOutput, ref csbiex); // Définir la nouvelle couleur d'arrière-plan (ici en bleu) csbiex.ColorRefs.ColorValue = 0x000000FF; // Appliquer la nouvelle couleur d'arrière-plan SetConsoleScreenBufferInfoEx(hConsoleOutput, ref csbiex); Console.WriteLine("Appuyez sur une touche pour quitter..."); Console.ReadKey(); } [DllImport("kernel32.dll", SetLastError = true)] static extern IntPtr GetStdHandle(int nStdHandle); [DllImport("kernel32.dll", SetLastError = true)] static extern bool GetConsoleScreenBufferInfoEx(IntPtr hConsoleOutput, ref CONSOLE_SCREEN_BUFFER_INFOEX csbiex); } }
Je pensais que c'était trivial mais force est de constater que je n'y parviens pas.
Quelqu'un a déjà fait ça ?
Partager