Ocultar janela de console no aplicativo de console C #

105

O fato é que eu realmente não quero que a janela do console apareça ... mas a solução deveria estar funcionando. O que quero dizer aqui é que quero manter o aplicativo em execução em segundo plano, sem que nenhuma janela seja exibida.

Usuário SOF
fonte
2
Você pode nos dar mais algumas informações sobre o que o aplicativo deve fazer? Parece que deveria ser um serviço ou aplicativo do Windows? Com um pouco de conhecimento sobre seu propósito, poderíamos ajudar muito mais e sugerir a melhor forma de resolver isso.
Dave
Seu aplicativo keylogger. Usei o serviço do Windows, mas não consigo obter estados-chave no serviço do Windows
SOF Usuário

Respostas:

188

Altere o tipo de saída de Aplicativo de console para Aplicativo do Windows . Isso pode ser feito em Projeto -> Propriedades -> Aplicativo no Visual Studio:

texto alternativo

Dirk Vollmar
fonte
4
A janela do console pisca e volta. Como faço para manter o aplicativo em execução sem janela alguma?
Usuário SOF
Usuário @SOF: Como você inicia o aplicativo? Ao clicar duas vezes no Explorer ou no menu Iniciar?
Dirk Vollmar,
também coloquei Console.ReadLine ();
Usuário SOF
16
Remova o Console.ReadLine. Não faz sentido se você não tem uma janela de console.
Dirk Vollmar,
1
@ KarolŻurowski: A ideia aqui é que você usaria isso para aplicativos que também vêm com alguma forma de interface do usuário (por exemplo, um ícone na bandeja do sistema) ou aplicativos que realizam uma determinada tarefa e saem automaticamente quando concluídas. Se você não tiver nenhum, o aplicativo será executado em segundo plano até o logoff / desligamento ou até que seja explicitamente eliminado, por exemplo, usando o Gerenciador de Tarefas.
Dirk Vollmar
26

Altere seu tipo de aplicativo para um aplicativo do Windows. Seu código ainda será executado, mas não terá janela de console, nem janela de janela padrão, a menos que você crie uma.

Sekhat
fonte
2
A janela do console pisca e volta. Como faço para manter o aplicativo em execução sem janela alguma?
Usuário SOF
Certifique-se de que ele não termina. Realmente não há muito mais a dizer sem mais informações. O que o programa faz? Ele executa algo em um loop?
Lasse V. Karlsen,
1
Alterar o "Tipo de saída" do aplicativo para "Aplicativo do Windows" funcionou para mim.
hellowahab de
12

Em vez de Console.Readline/keyvocê pode usar new ManualResetEvent(false).WaitOne()finalmente. Isto funciona bem para mim.

khaja ​​kamal
fonte
3

Talvez você queira tentar criar um aplicativo de serviço do Windows . Ele será executado em segundo plano, sem nenhuma IU.

bla
fonte
3
O serviço do Windows não consegue obter eventos de tecla pressionada
SOF Usuário
1
Os serviços são severamente limitados dependendo do seu aplicativo, a partir do Windows Vista eles são forçados para a Sessão 0 e, portanto, não podem realizar nada em outras sessões, como mostrar mensagens pop-up.
Matt
1
@Matt "não pode realizar nada em outras sessões" não é totalmente verdade. Este é um projeto de código para um serviço que abre um prompt de comando do administrador na área de trabalho do usuário conectado. codeproject.com/Articles/35773/…
Qodex
0

Altere o tipo de saída de aplicativo de console para aplicativo do Windows ,

E em vez de Console.Readline/keyvocê pode usar new ManualResetEvent(false).WaitOne()no final para manter o aplicativo em execução.

NT
fonte