Existe uma maneira de ocultar a janela do console ao executar um aplicativo de console?
Atualmente, estou usando um aplicativo Windows Forms para iniciar um processo do console, mas não quero que a janela do console seja exibida enquanto a tarefa estiver em execução.
c#
console-application
Aaron Thomas
fonte
fonte
Respostas:
Se você estiver usando a
ProcessStartInfo
classe, poderá definir o estilo da janela como oculto - no caso de aplicativos de console (não GUI), será necessário configurar o CreateNoWindow paratrue
:fonte
Se você escreveu o aplicativo de console, pode ocultá-lo por padrão.
Crie um novo aplicativo de console e altere o tipo "Tipo de saída" para "Aplicativo do Windows" (feito nas propriedades do projeto)
fonte
Se você estiver usando Process Class, poderá escrever
antes
yourprocess.start();
e o processo ficará ocultofonte
A resposta simples é: Acesse as propriedades do aplicativo do console (propriedades do projeto). Na guia "Aplicativo", altere o "Tipo de saída" para "Aplicativo do Windows". Isso é tudo.
fonte
Você pode usar a API do FreeConsole para desanexar o console do processo:
(é claro que isso é aplicável apenas se você tiver acesso ao código fonte do aplicativo do console)
fonte
FreeConsole
faz o que o nome diz, ele não impede o Windows de exibir o console antes de ser chamado.[DllImport("kernel32.dll")] static extern bool AllocConsole();
permite que você facilmente executar com um console a partir de um padrão Win32 aplicativoSe você estiver interessado na saída, pode usar esta função:
Ele executa o programa de linha de comando especificado, aguarda o término e retorna a saída como string.
fonte
Se você estiver criando um programa que não exija entrada do usuário, sempre poderá criá-lo como um serviço. Um serviço não mostra nenhum tipo de interface do usuário.
fonte
Adicione isso à sua classe para importar o arquivo DLL:
E então, se você deseja ocultá-lo, use este comando:
E se você quiser mostrar o console:
fonte
Sei que não estou respondendo exatamente o que você deseja, mas estou me perguntando se você está fazendo a pergunta certa.
Por que você também não usa:
Essas opções parecem melhores se tudo o que você quer é executar um processo.
fonte
Embora, como outras respostas aqui tenham dito, você possa alterar o "Tipo de saída" para "Aplicativo do Windows", saiba que isso significa que você não pode usá-
Console.In
lo, pois ele se tornará um NullStreamReader.Console.Out
eConsole.Error
parece ainda funcionar bem no entanto.fonte
Console.In
quando não há console para inserir algo? De onde deve vir algo que possa ser acessadoConsole.In
? Isso não faz nenhum sentido. Em outras palavras: é totalmente óbvio e lógico queConsole.In
é umNullStreamReader
neste caso.Com base na resposta de Adam Markowitz acima, o seguinte funcionou para mim:
fonte
Eu tenho uma solução geral para compartilhar:
Basta incluir esta classe no seu projeto e ligar
Magician.DisappearConsole();
.Um console piscará quando você iniciar o programa clicando nele. Ao executar no prompt de comando, o prompt de comando desaparece logo após a execução.
Eu faço isso para um Discord Bot que roda para sempre no fundo do meu computador como um processo invisível. Era mais fácil do que fazer o TopShelf trabalhar para mim. Alguns tutoriais do TopShelf falharam antes de eu escrever isso com alguma ajuda do código que encontrei em outro lugar. ; P
Eu também tentei simplesmente alterar as configurações no Visual Studio> Projeto> Propriedades> Aplicativo para iniciar como um aplicativo do Windows em vez de um aplicativo de console, e algo sobre o meu projeto impediu que isso ocultasse meu console - talvez porque o DSharpPlus exija iniciar um console na inicialização . Eu não sei. Seja qual for o motivo, essa classe me permite matar facilmente o console depois que ele aparece.
Espero que este mago ajude alguém. ;)
fonte
Apenas escreva
fonte