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
2 Comentários