none
Show form Windows Service RRS feed

  • Pergunta

  • Olá a todos, criei um windows service para verificar se existem novas requisições a cada x segundos, então o serviço acessa a base de dados executa um select e retorna se existem novos registros, com estes registros preciso exiber um form dizendo que existem novas requisições juntamente com o número dessas novas requisições, só que quando tento colocar meuform.show ele até abre, porém o form fica travado sem que o usuário consiga ler as informações nele. Como faço para abrir windows form em aplicativos do tipo windows service.

     

     

     

    Muito Obrigado a todos.

     

     

     

    Rafael R. Amaral Nascimento

    sexta-feira, 28 de setembro de 2007 01:56

Respostas

  • Oi, Rafael.

     

         Uma aplicação do tipo Windows Service não pode (e não tem como) ter uma interface gráfica. Se não me engano, esses recursos ficam bloqueados então, por exemplo, você não deveria conseguir nem exibir um messagebox.

     

         Para você conseguir ter esse tipo de interatividade com o usuário, acredito que o melhor seria desenvolver uma aplicação windows normal (quero dizer, do tipo Windows Forms) que seja executada na barra de sistema do Windows junto com os outros programas que ficam ali do lado do relógio.

     

         Essa aplicação teria um timer que faria a verificação de tempos em tempos como você quer e, por causa de ser uma aplicação Windows Forms (e não uma aplicação Windows Service) você conseguiria exibir um form ou uma messagebox sem problemas.

     

         Se você quer uma dica de como criar uma aplicação Windows Forms que execute na barra de sistemas dê uma olhada neste post aqui do fórum: http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=2150505&SiteID=21

     

         Espero que isso o ajude.

     

    Abraço.

    sexta-feira, 28 de setembro de 2007 03:15
  • Caro Rafael,

     

    Concordo com a opinião do Eduardo, mas, para conseguir abrir um form através de um Windows Service, você pode entrar nas propriedades do serviço (Painel de Controle => Ferramentas Administrativas => Serviços => Bt direito no serviço => Propriedades), ir à aba Logon e habilitar "Permitir que o serviço interaja com a área de trabalho".

     

    Só vou adiantando que isso não é muito recomendado, pois abre algumas brechas...

     

    Portanto, o melhor seria seguir a sugestão do Eduardo mesmo...

    sexta-feira, 28 de setembro de 2007 11:22
    Moderador

Todas as Respostas

  • Oi, Rafael.

     

         Uma aplicação do tipo Windows Service não pode (e não tem como) ter uma interface gráfica. Se não me engano, esses recursos ficam bloqueados então, por exemplo, você não deveria conseguir nem exibir um messagebox.

     

         Para você conseguir ter esse tipo de interatividade com o usuário, acredito que o melhor seria desenvolver uma aplicação windows normal (quero dizer, do tipo Windows Forms) que seja executada na barra de sistema do Windows junto com os outros programas que ficam ali do lado do relógio.

     

         Essa aplicação teria um timer que faria a verificação de tempos em tempos como você quer e, por causa de ser uma aplicação Windows Forms (e não uma aplicação Windows Service) você conseguiria exibir um form ou uma messagebox sem problemas.

     

         Se você quer uma dica de como criar uma aplicação Windows Forms que execute na barra de sistemas dê uma olhada neste post aqui do fórum: http://forums.microsoft.com/MSDN-BR/ShowPost.aspx?PostID=2150505&SiteID=21

     

         Espero que isso o ajude.

     

    Abraço.

    sexta-feira, 28 de setembro de 2007 03:15
  • Caro Rafael,

     

    Concordo com a opinião do Eduardo, mas, para conseguir abrir um form através de um Windows Service, você pode entrar nas propriedades do serviço (Painel de Controle => Ferramentas Administrativas => Serviços => Bt direito no serviço => Propriedades), ir à aba Logon e habilitar "Permitir que o serviço interaja com a área de trabalho".

     

    Só vou adiantando que isso não é muito recomendado, pois abre algumas brechas...

     

    Portanto, o melhor seria seguir a sugestão do Eduardo mesmo...

    sexta-feira, 28 de setembro de 2007 11:22
    Moderador

  • André,
    Que tipo de "brecha" pode ser aberta???
    Tenho que criar um servico que fique monitorando alguns aplicativos no servidor.  Se alguem fechar algum destes aplicativos o servico tem que executa-lo. So vejo essa solucao como servico, agora em se tratando de servidor, fiquei preocupado com essas "brechas" que vc colocou...

    Abraços


    sexta-feira, 19 de setembro de 2008 20:03