Bom dia pessoal.

Bem, estou com uma dúvida aqui e, após muito penar procurando material, não 
encontrei nada que me ajudasse, então venho à vocês pedir uma orientação.

Aqui no meu trabalho precisei criar um serviço Windows, o que foi feito 
corretamente. Este serviço deverá ser inicializado juntamente com o sistema, o 
que de fato ocorre. Sempre que o computador é reiniciado, ou em caso de queda 
de energia, os processos correntes são novamente executados na próxima vez que 
o computador for ligado.Sua função é monitorar um arquivo texto, gerado pela 
aplicação principal e, a cada alteração deste arquivo, há parâmetros que são 
lidos (processo, tempo para execução, tipo de execução, etc) que são carregados 
em uma estrutura do tipo lista ordenada.

Utilizei o utilitário sc.exe, disponível no Windows, para registar esse 
serviço, porém o mesmo foi registrado com os parâmetros abaixo:

SERVICE_NAME: SchedulerBusinessConnectionService
        TYPE               : 110  WIN32_OWN_PROCESS (interactive)
        STATE              : 2  START_PENDING
                                (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
        WIN32_EXIT_CODE    : 0  (0x0)
        SERVICE_EXIT_CODE  : 0  (0x0)
        CHECKPOINT         : 0x0
        WAIT_HINT          : 0x7d0
        PID                : 2676
        FLAGS              :

Um consenso que cheguei, e que verifiquei posteriormente durante a execução 
desse serviço, é que não posso pará-lo, pausá-lo e ele ignora completamente o 
evento OnShutdown. Quando clico em 'Iniciar', no Gerenciador do Computador, 
item Serviços, o mesmo fica em estado pendente 'START_PENDING'. Utilizando o 
utilitário sc.exe, não consigo passar os parâmetros stop, pause, continue, 
etc...

Meu problema:

No evento OnShutdown(), que não ocorre, o serviço deveria, caso a lista de 
processos ainda não tivesse sido esvaziada (todos os processos executados) 
criar um arquivo em disco contendo as informações que estão nesta lista. Na 
inicialização da máquina, quando o serviço iniciasse, procedimento OnStart() - 
que fica pendente, conforme listagem acima - , deveria verificar a existência 
deste arquivo e, em caso positivo, realizar uma leitura sequencial no mesmo e 
carregar seus dados para a lista de processos. Ao final desta leitura, o 
arquivo seria excluido. Codifiquei isso tendo em mente que o serviço poderia 
executar os processos pendentes após a inicialização do computador. Mas a parte 
boa da história é que a lista é inicializada e carregada corretamente no código 
que está no evento OnStart() !!!

Gostaria de saber com os colegas se alguém já passou por situação semelhante ao 
criar serviços no Windows, e como poderia contornar esses problemas.

NOTA: Para obter mais informações sobre o utilitário sc.exe, abra a ajuda do 
Windows (F1) e procure por SC. Aparece uma porrada de capacidades documentadas 
deste programa, mas nenhuma delas me informa como eu poderia alterar meu 
serviço para que eu pudesse inicializá-lo (OnStart), pará-lo (OnStop), pausá-lo 
(OnPause), continuá-lo (OnContinue), reinicializá-lo - através do reboot do 
sistema (OnShutdown).

Obrigado a todos antecipadamente. Caso queiram, podem manter contato comigo 
pelo Messenger : [EMAIL PROTECTED]


--------------------------------------------------------------------------------

Atenciosamente:

     Eduardo Cláudio Nicácio
      Analista Programador JR.
      Fábrica 02 - CTIS Informática
      Tel.: (11) 3156-7115
      [EMAIL PROTECTED] [EMAIL PROTECTED]  


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



-- 
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]
 
Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/

<*> Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html

 


Responder a