GARANTIR DESCONTO

Fórum Windows não reinicia com o programa rodando #329389

14/09/2006

0

Eae pessoal,

Tenho um aplicativo de backup desenvolvido em Delphi.
Ao iniciar ele vai para a area de notificação e em determinada hora ele executa o backup dos dados do computador (utiliza um Timer para verificar se está na hora).

Detalhe: O sistema operacional não reinicia, não efetua logoff, não desliga se o programa estiver rodando, mesmo que não esteja executando a operação.

O windows somente reinicia se forçar com CONTROL ou fechar o programa antes.

Alguma sugestão?


Netosdr

Netosdr

Responder

Posts

14/09/2006

Delphi32

Bem, tem uma pergunta básica que você não respondeu acima:

Seu programa faz alguma interceptação da Mensagem do windows que ´avisa´ aos programas que ele está sendo desligado/reiniciado?

t+!


Responder

Gostei + 0

14/09/2006

Netosdr

Caro colega,

Não tem nada no programa que ´avisa´ ao sistema operacional que o programa foi encerrado, nem nada do gênero.

É um aplicativo muito básico:

- Ao iniciar ele vai para a área de notificação
- Tem um timer que verifica se está na hora (if Time = vTime then..)
- Se for na hora, desabilita o timer
- Executa a operação (simples Winexec)
- Habilita o Timer novamente.

Basicamente isso..


Responder

Gostei + 0

15/09/2006

Rodc

Já tive este problema quando usava um TNMSMTP, da palheta FastNet. Para resolver o problema tive de criar o componente dinamicamente na hora de enviar o e-mail.
Você pode também interceptar a mensagem de desligar do Windows e mandar fechar o seu sistema.


Responder

Gostei + 0

15/09/2006

Netosdr

Já tive este problema quando usava um TNMSMTP, da palheta FastNet. Para resolver o problema tive de criar o componente dinamicamente na hora de enviar o e-mail. Você pode também interceptar a mensagem de desligar do Windows e mandar fechar o seu sistema.


Como fazer isso amigo?


Responder

Gostei + 0

15/09/2006

Rodc

Como fazer isso amigo?

Isto oquê? Criar o TNMSMTP dinamicamente ou pegar a mensagem do Windows?


Responder

Gostei + 0

15/09/2006

Netosdr

Pegar a mensagem de desligamento, logoff, reinicar do windows.


Responder

Gostei + 0

15/09/2006

Rodc

Segue um exemplo:
protected
    procedure WMQueryEndSession(var Msg : TWMQueryEndSession); message WM_QueryEndSession;

......

procedure TForm1.WMQueryEndSession(var Msg : TWMQueryEndSession);
begin
    Close();
end;



Responder

Gostei + 0

15/09/2006

Rodc

Ou melhor, para ficar mais lógico, use a mensagem WM_ENDSESSION. A mensagem WM_QUERYENDSESSION é para você definir se o windows pode ou não fechar.
protected 
    procedure WMQuerySession(var Msg : TWMEndSession); message WM_EndSession; 

...... 

procedure TForm1.WMEndSession(var Msg : TWMEndSession); 
begin 
    Close(); 
end;



Responder

Gostei + 0

15/09/2006

Netosdr

Beleza funcionou mas tem um detalhe:

- Se eu usar Close continua sem nenhuma ação, os outros programas sao encerrados, o meu aplicativo continua impedindo;
- Se eu usar Application.Terminate o aplicativo termina quando mando reiniciar, mas não reinicia, aí tenho que entrar em reiniciar de novo, aí sim funciona.

Obs: o aplicativo tem 01 form e 01 datamodule.


Responder

Gostei + 0

15/09/2006

Rodc

Tenta usar o QueryEndSession então... é apenas um chute...


Responder

Gostei + 0

15/09/2006

Delphi32

ou... se você estiver usando o componente que rodc falou, tente criá-lo dinamicamente... pode haver um bug nesse componente...

caso você não use esse componente, faça testes para descobrir quem é que está impedindo o windows de desligar.

exemplo: remova o timer do projeto, compile, execute e veja se reinicia... vai fazendo assim até descobrir quem é... depois que descobrir quem é fica mais fácil de resolver...

t+!


Responder

Gostei + 0

15/09/2006

Rodc

caso você não use esse componente, faça testes para descobrir quem é que está impedindo o windows de desligar.

É verdade, foi bem assim que eu descobri o erro!!! Fui removendo componentes, units, rotinas, até encontrar o que causava o erro.


Responder

Gostei + 0

15/09/2006

Netosdr

Não estava lembrando, tenho um componente TNmFTP no meu Form, ele que estava dando pau (segui o conselho de ir removendo item por item).
Acho que esses componentes desse fabricante dão um pouco de canseira como o colega mencionou.

Tirei ele, criei em tempo de execução e problema resolvido.

Obrigado a todos pela atenção!


Responder

Gostei + 0

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar