Esta é uma versão arquivada/estática do antigo Blog do André. Isso significa que todo o conteúdo aqui presente não irá ser atualizado, e pode conter erros. Algumas funcionalidades poderão não estar disponíveis nesta versão arquivada.
07
Jun 2011

Adicionar uma consola a uma aplicação Windows Forms em C#

Hoje tive a necessidade de criar um pequeno programa em C# que tinha em anexo uma janela de consola para mostrar algum ouput sob forma de texto de uma tarefa que estava a ser executada. Obter este efeito em C# é bastante simples: basta usar a API do Windows. Na vossa aplicação Windows Forms, comecem por localizar o ficheiro Program.cs, e na zona de imports (using, no topo do ficheiro), adicionem o seguinte:

using System.Runtime.InteropServices;

Dentro da classe Program, e fora do método main(), coloquem a seguinte referência à função da API que vamos usar:

[DllImport("kernel32")]
static extern bool AllocConsole();

Posto isto, podem fazer a chamada à função no vosso método main(), antes do código que já está colocado por omissão:

// Abrir a janela de consola em anexo
AllocConsole();

Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
Application.Run(new Form1());

Corram a aplicação et voilà! Lá está a consola aberta, juntamente com o programa. Para escreverem na consola, basta usar a classe Console, tal como numa aplicação de consola normalíssima. Adicionem um botão no formulário e, no evento de  clique, adicionem o seguinte:

Console.WriteLine("Este texto vai aparecer na consola!");

Umas notas/restrições:

  • Ao fechar a consola, a aplicação Windows Forms também fecha (e vice-versa)
  • Também podem pedir input ao utilizador pela consola. Nos casos em que testei, a janela gráfica ficava “bloqueada” quando a janela de consola recebia o foco para digitar o input

Fonte: How to Console Window from C# Windows Application?


Atualização: em seguimento de uma dúvida que recebi por email, que tinha como objetivo correr um comando e colocar o seu output na consola, deixo um exemplo muito básico de como o fazer. Serve também de exemplo para ilustrar a utilidade de uma consola numa aplicação Windows Forms

Exemplo de consola num projeto Windows Forms

Gostou deste artigo?

Facebook Twitter Google Plus Delicious

2 Comentários

 

  • Gravatar de Bruno

    Bruno

    15/09/2011 @ 13:56

    Interessante! Em VB seria algo semelhante? parabéns pelo blog

  • Gravatar de André

    André

    15/09/2011 @ 15:57

    Olá Bruno,

    penso que em VB seria algo similar sim (visto que se trata de uma chamada ao sistema operativo, independente de linguagem), contudo não testei.

    Cumps.