Re: [delphi-br] OnExecute e OnStart (TService)

2009-07-06 Por tôpico José Mário Silva Guedes
http://eugostododelphi.blogspot.com/search/label/serviço%20do%20windowshttp://eugostododelphi.blogspot.com/search/label/servi%C3%A7o%20do%20windows
Amigon, sendo bem ligeiro:

O TService nada mais é que uma Thread, portanto, o OnExecute do TService
equivale ao Execute de uma Thread. Pela minha experiência não aconselho a
programar nada relevante neste OnExecute, criando suas próprias threads para
fazer o trabalho.

O OnStart ocorre quando o serviço é iniciado, sendo que você pode validar
algumas condições, podendo abortar a operação, setando a variável Started
para false, e até mesmo retornando um código de erro.

Sugiro que tome cuidado. Serviço é uma coisa, aplicação desktop é outra
coisa. Não tente misturar os dois mundos.

Eu não sei explicar o ServiceType mas acho que sua solução não passa por ai.


[As partes desta mensagem que não continham texto foram removidas]



Res: Re: [delphi-br] OnExecute e OnStart (TService)

2009-07-06 Por tôpico EmbarcaDelphi
O meu programa é freeware para uma empresa de manutenção de 
computadores, a maneira viável que eu e o proprietário encontramos foi 
disponibilizar uma publicidade em todos os computadores que ele vir a 
usar meu programa, então eu resolvi colocar a publicidade como serviço. 
O serviço vai ser executado toda vez que o computador for iniciado sem 
precisar de algum programa ser instalado no computador da pessoa para 
tal. A publicidade ficará sendo executada por 5 dias calculado pela data 
de um arquivo, ou seja, ele pode iniciar o computador quantas vezes 
quiser, mas só contará pelo cálculo da data no arquivo e não do sistema.
Com o serviço fica mais difícil de um leigo vir a remover, já um 
programa no Run do registro é bem mais fácil, porisso que escolhi fazer 
um serviço. A janela que vai aparecer é meramente texto e imagem, não 
faz nada no computador da pessoa, apenas faz a publicidade minha. Não 
acessa internet nem nada a não ser o que disse.
Eu chamo a janela prlo Start. Eu queria saber se o ServiceType em 
stSystem ele seria executado na inicialização do sistema ou isso não 
influi em nada. O comando /INSTALL /SILENCE eu coloco na hora que o 
pessoal está usando meu programa. Daí, o processo será automático?

A publicidade ficará na tela por 10 segundos e fecha, mas o serviço 
ficará ligado, se o usuário permanecer por mais de 24 horas ele 
aparece novamente.

Eu, usando só o OnStart resolve (sem precisar usar o OnExecute)?
Como faria para esperar o tempo de 24 horas e fazer o sistema ativar 
novamente e executar para abrir a janela da publicidade novamente?

É só isso que preciso fazer. A rotina de gravar data e hora no arquivo 
já está ok, só falta a questão do OnExecute e OnStart e a opção do 
ServiceType o que pode acontecer usando stSystem

Grato



José Mário Silva Guedes escreveu:


 http://eugostododelphi.blogspot.com/search/label/servi 
 http://eugostododelphi.blogspot.com/search/label/serviço%20do%20windowshttp://eugostododelphi.blogspot.com/search/label/servi%C3%A7o%20do%20windows
  
 http://eugostododelphi.blogspot.com/search/label/servi%C3%A7o%20do%20windows
 Amigon, sendo bem ligeiro:

 O TService nada mais é que uma Thread, portanto, o OnExecute do TService
 equivale ao Execute de uma Thread. Pela minha experiência não aconselho a
 programar nada relevante neste OnExecute, criando suas próprias 
 threads para
 fazer o trabalho.

 O OnStart ocorre quando o serviço é iniciado, sendo que você pode validar
 algumas condições, podendo abortar a operação, setando a variável Started
 para false, e até mesmo retornando um código de erro.

 Sugiro que tome cuidado. Serviço é uma coisa, aplicação desktop é outra
 coisa. Não tente misturar os dois mundos.

 Eu não sei explicar o ServiceType mas acho que sua solução não passa 
 por ai.

 .

 



Re: Re: [delphi-br] OnExecute e OnStart (TService)

2009-07-06 Por tôpico José Mário Silva Guedes
Vamos lá:
Você só dará o -install -silent uma vez só.

Dai o seu serviço aparecerá no Gerenciador de Serviços:
Iniciar-Configurações-Painel de controle-Ferramentas
Administrativa-Serviços

O OnStart irá ocorrer somente uma vez quando o serviço for iniciado, dai ele
fica no OnExecute. O ServiceType não influi em nada no seu problema. O que
talvez influa seja o Interactive, que deve estar true para o serviço
interagir com o Sistema Operacional.

Eu entendi o seu problema e tal.

Acho que o Serviço não é a solução. Em outros e-mails vocês estava na dúvida
entre TTimer e TThread. Melhor voltar a considerar essas duas opções.


[As partes desta mensagem que não continham texto foram removidas]



Re: [delphi-br] OnExecute e OnStart (TService)

2009-07-06 Por tôpico embarcadelphi
Mário, então eu devo usar só o evento OnExecute para ficar num loop, setar um 
variável booleana, se ela estiver True o serviço funciona, se tiver False ela 
fica no loop esperando ficar True, é isso?
Esqueço o OnStart então?
Agora, como faço para terminar e remover da memória este serviço até que seja 
reiniciado o computador?
Outra coisa, posso usar o /uninstall de dentro do serviço (pois, coloquei uma 
opção de remover a publicidade após aparecer 5 vezes)?

De posse das info. acima dou por concluído este tópico.

Grato pela ajuda pessoal 


blz.


--- Em delphi-br@yahoogrupos.com.br, José Mário Silva Guedes jmariogue...@... 
escreveu

 Vamos lá:
 Você só dará o -install -silent uma vez só.
 
 Dai o seu serviço aparecerá no Gerenciador de Serviços:
 Iniciar-Configurações-Painel de controle-Ferramentas
 Administrativa-Serviços
 
 O OnStart irá ocorrer somente uma vez quando o serviço for iniciado, dai ele
 fica no OnExecute. O ServiceType não influi em nada no seu problema. O que
 talvez influa seja o Interactive, que deve estar true para o serviço
 interagir com o Sistema Operacional.
 
 Eu entendi o seu problema e tal.
 
 Acho que o Serviço não é a solução. Em outros e-mails vocês estava na dúvida
 entre TTimer e TThread. Melhor voltar a considerar essas duas opções.
 
 
 [As partes desta mensagem que não continham texto foram removidas]





Re: [delphi-br] OnExecute e OnStart (TService)

2009-07-06 Por tôpico José Mário Silva Guedes
Vixi, acho que você não entendeu muito do que eu disse. :)
Eu acho que você deve abandonar essa idéia. Mas se deseja insistir, vamos
lá:

No OnExecute, seria algo mais ou menos assim:


while not (Self.Terminated) do
begin

//Faça algo aqui

end;


O Terminated ficará true quando o serviço receber uma ordem de Stop, que é
tratado pelo evento OnStop.


[As partes desta mensagem que não continham texto foram removidas]



[delphi-br] OnExecute e OnStart (TService)

2009-07-05 Por tôpico embarcadelphi
E aí pessoal...
Nunca fiz um serviço para Windows. Gostaria de explicação para estes dois 
eventos:

OnExecute e OnStart

O que faz o OnExecute e o OnStart (qual a relação um e o outro, parece que 
ambos trabalham juntos)?

Outra coisa, a propriedade no ObjectInspector StartType poderiam me informar 
o que cada item representa? Por exemplo, não vou usar um programa para chamar 
este serviço, queria que ele mesmo fosse executado quando o Windows iniciar, 
então eu pensei -Acho que colocando o item stSystem o serviço inicia qdo o 
Windows é iniciado, isso se procede?
O meu aplicativo seria chamado de dentro do OnStart.

Só mais uma coisinha, após ser fechado meu aplicativo (estou abrindo ele com 
ShowModal) qual o comando para finalizar o serviço e sair totalmente dele?

Grato



Re: [delphi-br] OnExecute e OnStart (TService)

2009-07-05 Por tôpico Paulo Coutinho
Ta ai:

http://www.google.com.br/search?q=servi%C3%A7o+windows+delphiie=utf-8oe=utf-8aq=trls=org.mozilla:pt-BR:officialclient=firefox-a

2009/7/6 embarcadelphi embarcadel...@yahoo.com.br:


 E aí pessoal...
 Nunca fiz um serviço para Windows. Gostaria de explicação para estes dois
 eventos:

 OnExecute e OnStart

 O que faz o OnExecute e o OnStart (qual a relação um e o outro, parece que
 ambos trabalham juntos)?

 Outra coisa, a propriedade no ObjectInspector StartType poderiam me
 informar o que cada item representa? Por exemplo, não vou usar um programa
 para chamar este serviço, queria que ele mesmo fosse executado quando o
 Windows iniciar, então eu pensei -Acho que colocando o item stSystem o
 serviço inicia qdo o Windows é iniciado, isso se procede?
 O meu aplicativo seria chamado de dentro do OnStart.

 Só mais uma coisinha, após ser fechado meu aplicativo (estou abrindo ele com
 ShowModal) qual o comando para finalizar o serviço e sair totalmente dele?

 Grato

 



-- 
Atenciosamente,
Paulo Coutinho.
Blog: www.prsolucoes.com/blog
Site: www.prsolucoes.com
Msn:  pa...@prsolucoes.com