Aplicação + Serviço

Delphi

26/06/2013

Bom pessoal, estou desenvolvendo um projeto Cliente/Servidor básico com "Socket" de gerenciamento de maquina que acessa a camada WMI do Windows.

Quero usar um serviço para para realizar as tarefas na maquina cliente, mas quando chamo uma outra aplicação usando Shell Execute ou WinExc, o comando e executado mas o executável chamado não aparece.

Alguém tem alguma dica sobre como realizar estas interações de Serviço/Aplicação ou ate mesmo como chamar um Form no serviço??
Westeyrv

Westeyrv

Curtidas 0

Respostas

Alessandro Yamasaki

Alessandro Yamasaki

26/06/2013

Teste o retorno do comando, pois a função possui erro quando o retorno é menor ou igual a 32. Se não retornou erro, mensagem padrão.
GOSTEI 0
Westeyrv

Westeyrv

26/06/2013

Desculpe a pergunta mas como realizo este teste? no serviço nao tem debug, para contornar esta situação criei um log que e gravado normalmente antes e depois do camando.

ex. SalvaLog('este 1');
shellexecute(...);
SalvaLog('este 2');

obs. em uma aplicação comum o comando funciona normal.


Desde ja obrigado!
GOSTEI 0
Rodolpho Silva

Rodolpho Silva

26/06/2013

Desculpe a pergunta mas como realizo este teste? no serviço nao tem debug

Tem sim. Segue os passos:
1-Compile seu serviço
2-Inicie-o
3-Vá no Delphi e selecione a opção Run\Attach to Process
4-Selecione o seu serviço na lista e clique em Attach

Pronto! O debug do Delphi já estará monitorando seu serviço.

Agora sobre o problema original do post, se não me engano, a Microsoft em uma determinada versão do Windows impediu (como medida de segurança) que os serviços interagisse com com o SO em alguns pontos (como exibir janelas, etc...). Não tenho mais o link original (pois li isso a uns 3 anos atras) mas acredito que deve ser isso que está impedindo seu serviço de chamar outro executável. Existe até uma propriedade no TService (interactive) que não importa o valor, não funciona nas versões atuais do Windows. Está lá apenas para compatibilidade com versões anteriores.

Espero ter ajudado.
GOSTEI 0
Westeyrv

Westeyrv

26/06/2013

Ok ,obrigado pela resposta esta mesmo com esta duvida. Mas existe outra maneira para eu chamar um executavel apenas na hora que eu precisar, sem que o Usuário consiga mexer.

Exemplo. Chamar um chat.
GOSTEI 0
Rodolpho Silva

Rodolpho Silva

26/06/2013

Bem, você pode tentar ao invés de usar como serviço, usar como aplicação.
GOSTEI 0
POSTAR