Procurei no Google informações sobre como esconder a própria janela do console. Surpreendentemente, as únicas soluções que pude encontrar foram soluções hacky que envolviam FindWindow()
encontrar a janela do console por seu título . Analisei um pouco mais a API do Windows e descobri que existe uma maneira muito melhor e mais fácil, então eu queria publicá-la aqui para que outras pessoas o encontrassem.
Como você oculta (e mostra) a janela do console associada ao meu próprio aplicativo de console C #?
c#
console
console-application
Timwi
fonte
fonte
csproj
arquivo manualmente. O Visual Studio não tem GUI para fazer isso, mas respeitará a configuração se você editar ocsproj
arquivo corretamente.using System.Runtime.InteropServices;
const int SW_SHOWMINIMIZED = 2;
e,ShowWindow(handle, SW_SHOWMINIMIZED);
dessa forma, o console não fica oculto, apenas minimizado.Basta acessar as Propriedades do aplicativo e alterar o tipo de Saída de Aplicativo do console para Aplicativo do Windows .
fonte
Por que você precisa de um aplicativo de console se deseja ocultar o próprio console? =)
Eu recomendo definir o tipo de saída do projeto como aplicativo do Windows em vez do aplicativo do console. Não mostrará a janela do console, mas executará todas as ações, como o aplicativo Console.
fonte
TopShelf
permite que você executeConsoles
como um serviço e este breaks queVocê pode fazer o inverso e definir o tipo de saída do aplicativo como: Aplicativo do Windows. Em seguida, adicione esse código ao início do aplicativo.
Este código mostrará o console se
showConsole
fortrue
fonte
Veja meu post aqui:
Mostrar console no aplicativo do Windows
Você pode criar um aplicativo do Windows (com ou sem a janela) e mostrar o console conforme desejado. Usando esse método, a janela do console nunca aparece, a menos que você o mostre explicitamente. Eu o uso para aplicativos de modo duplo que desejo executar no modo console ou GUI, dependendo de como eles são abertos.
fonte
"Apenas para ocultar" você pode:
Altere o tipo de saída de Aplicativo do console para Aplicativo do Windows ,
E em vez de
Console.Readline/key
você pode usarnew ManualResetEvent(false).WaitOne()
no final para manter o aplicativo em execução.fonte
Se você não quiser depende do título da janela, use o seguinte:
...
fonte
Se você não tiver problemas para integrar um aplicativo em lote pequeno, existe um programa chamado Cmdow.exe que permitirá ocultar as janelas do console com base no título do console.
Adicione o exe à solução, defina a ação de compilação como "Conteúdo", defina Copiar para o Diretório de Saída para o que melhor combina com você e o cmdow ocultará a janela do console quando for executada.
Para tornar o console visível novamente, basta alterar os argumentos
fonte