Como alterar as cores de texto do primeiro plano e plano de fundo de uma janela de console no Visual Basic .NET ou no Visual Basic 2005

IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine Translation ou MT), não tendo sido portanto traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.

Clique aqui para ver a versão em Inglês deste artigo: 319234
Para obter uma Microsoft translation from VPE for Csharp .NET versão deste artigo, consulte 319883.

NESTA TAREFA

Sumário
Este artigo passo a passo descreve como alterar as cores de primeiro plano e plano de fundo do texto que está escrito na janela do console usando o Visual Basic .NET ou Visual Basic 2005.

back to the top

Visão geral

Para alterar as cores de primeiro plano e plano de fundo do texto que aparece em um programa de console no Visual Basic .NET ou no Visual Basic, use a função do Win32 SetConsoleTextAttribute . Essa função define os atributos de caracteres que são gravadas para o buffer de tela.

Se você alterar esses atributos em tempo de execução, as alterações são válidas enquanto o console está aberto. Isso significa que se você executar o programa a partir uma linha de comando em uma janela de console que já está em execução, alterações para os atributos de texto são válidas para essa janela de console para enquanto a janela do console for aberta (mesmo depois que o programa é fechado). Portanto, um programa deve restaurar os atributos de cor original antes do programa será finalizado. Se você fecha e, em seguida, reabrir a janela do console, os atributos são redefinidos para seus valores padrão.

Este artigo demonstra como salvar as configurações originais do console, quando o programa é iniciado, como modificar essas configurações de cor, e como restaurar as cores para seus valores originais como o programa termina.

Você pode obter os atributos de texto da janela do console com a função GetConsoleScreenBufferInfo . Esta função preenche uma instância da estrutura CONSOLE_SCREEN_BUFFER_INFO com informações sobre as informações de buffer de saída atual. O parâmetro wAttribute dessa estrutura contém as informações cores para esse buffer de saída. Você pode armazenar essas informações e usá-lo posteriormente para restaurar as cores:
   GetConsoleScreenBufferInfo(hConsoleHandle, ConsoleInfo)   OriginalColors = ConsoleInfo.wAttributes				
a classe é usada neste exemplo tem dois métodos. O método TextColor aceita um inteiro como seu parâmetro. Este parâmetro contém as informações usadas para definir as cores de texto do primeiro plano e plano de fundo. Você pode usar qualquer combinação de cores que você pode criar vermelho de combinação, verde e azul:
      Public Sub TextColor(ByVal Colors As Integer)         SetConsoleTextAttribute(hConsoleHandle, Colors)      End Sub				
você use o método ResetColor para definir atributos de buffer de saída do console com os valores originais que capturado quando o programa começou:
      Public Sub ResetColor()         SetConsoleTextAttribute(hConsoleHandle, OriginalColors)      End Sub				
para obter mais informações sobre as funções que são usadas neste exemplo, consulte a seção "Referências" deste artigo.

back to the top

Demonstração passo a passo

  1. Crie um novo aplicativo de console do Visual Basic .NET ou Visual Basic 2005.
  2. Adicione uma nova classe ao seu programa clicando com o botão direito seu projeto no Solution Explorer e, em seguida, clicando em Add Class no menu Adicionar .

    Observação No Visual Studio 2005, clique em Class no menu Adicionar .
  3. Cole o código a seguir para criar a classe. Certifique-se de substituir todo o código anterior em class.
       Imports System.Runtime.InteropServices   Public Class Class1      Private hConsoleHandle As IntPtr      Private ConsoleOutputLocation As COORD      Private ConsoleInfo As CONSOLE_SCREEN_BUFFER_INFO      Private OriginalColors As Integer      Private Const STD_OUTPUT_HANDLE As Integer = &HFFFFFFF5      Private Declare Auto Function GetStdHandle Lib "kernel32.dll" (ByVal nStdHandle As Integer) As IntPtr      Private Declare Auto Function GetConsoleScreenBufferInfo Lib "kernel32.dll" (ByVal hConsoleOutput As IntPtr, _                                                                       ByRef lpConsoleScreenBufferInfo As CONSOLE_SCREEN_BUFFER_INFO) As Integer      Private Declare Auto Function SetConsoleTextAttribute Lib "kernel32" (ByVal hConsoleOutput As IntPtr, ByVal wAttributes As Integer) As Long      Public Enum Foreground         Blue = &H1         Green = &H2         Red = &H4         Intensity = &H8      End Enum      Public Enum Background         Blue = &H10         Green = &H20         Red = &H40         Intensity = &H80      End Enum      <StructLayout(LayoutKind.Sequential)> _      Private Structure COORD         Dim X As Short         Dim Y As Short      End Structure      <StructLayout(LayoutKind.Sequential)> _      Private Structure SMALL_RECT         Dim Left As Short         Dim Top As Short         Dim Right As Short         Dim Bottom As Short      End Structure      <StructLayout(LayoutKind.Sequential)> _      Private Structure CONSOLE_SCREEN_BUFFER_INFO         Dim dwSize As COORD         Dim dwCursorPosition As COORD         Dim wAttributes As Integer         Dim srWindow As SMALL_RECT         Dim dwMaximumWindowSize As COORD      End Structure      Sub New()         hConsoleHandle = GetStdHandle(STD_OUTPUT_HANDLE)         GetConsoleScreenBufferInfo(hConsoleHandle, ConsoleInfo)         OriginalColors = ConsoleInfo.wAttributes      End Sub      Public Sub TextColor(ByVal Colors As Integer)         ' Set the text colors.         SetConsoleTextAttribute(hConsoleHandle, Colors)      End Sub      Public Sub ResetColor()         ' Restore the original colors.         SetConsoleTextAttribute(hConsoleHandle, OriginalColors)      End Sub   End Class					
  4. Cole o seguinte código no seu módulo. Certifique-se de substituir todo o código anterior no módulo.
       Module Module1      Sub Main()         Dim TextChange As New Class1()         Console.WriteLine("Original colors")         Console.WriteLine("Press ENTER to start")         Console.ReadLine()         TextChange.TextColor(Class1.Foreground.Green + Class1.Foreground.Intensity)         Console.WriteLine("This text is green")         Console.WriteLine("Press ENTER to change the colors again")         Console.ReadLine()         TextChange.TextColor(Class1.Foreground.Red + Class1.Foreground.Blue + Class1.Foreground.Intensity)         Console.WriteLine("Now the text is purple")         Console.WriteLine("Press ENTER to change the colors again")         Console.ReadLine()         TextChange.TextColor(Class1.Foreground.Blue + Class1.Foreground.Intensity + Class1.Background.Green + Class1.Background.Intensity)         Console.WriteLine("Now the text is blue and the background is green")         Console.WriteLine("Press ENTER to restore everything to the original colors")         Console.ReadLine()         TextChange.ResetColor()         Console.WriteLine("Back to the original colors")         Console.WriteLine("Press ENTER to end")         Console.ReadLine()      End Sub   End Module					
  5. Pressione F5 para compilar e executar o programa.
back to the top

Solução de problemas

Certifique-se passar um valor válido como o parâmetro para o método TextColor . Você pode criar um valor válido, combinando os valores obtidos as enumerações de primeiro plano e plano de fundo como são definidos na classe.

back to the top
Referências
Para obter informações adicionais sobre funções do console, visite o seguinte site: Para obter informações adicionais, clique no número abaixo para ler o artigo na Base de dados de Conhecimento da Microsoft:
319239COMO: Limpar a janela de console com Visual Basic .NET
back to the top

Aviso: este artigo foi traduzido automaticamente

Propriedades

ID do Artigo: 319234 - Última Revisão: 11/26/2007 02:20:24 - Revisão: 3.5

Microsoft Visual Basic 2005, Microsoft Visual Basic .NET 2003 Standard Edition, Microsoft Visual Basic .NET 2002 Standard Edition

  • kbmt kbvs2005swept kbvs2005applies kbhowtomaster KB319234 KbMtpt
Comentários