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.


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


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.


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.


3

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


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.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.