Aplicação Tray
Bom dia
Criei uma aplicação Tray que é carregada e fica na barra de tarefas na área do relógio do windows.
Gostaria que, ao desligar o computador, a aplicação fosse encerrada.
Atualmente ela fica aguardando que se feche manualmente
Tem algum jeito de fazer isso ?
Obrigada
Silvia
Silvia Berezin
Curtidas 0
Respostas
Wesley Yamazack
28/06/2010
Olá Boa tarde.
Existem várias mensagens, do SO, que conseguimos detectar uma delas é o desligamento. Veja o Exemplo abaixo declare no Private do seu formulário a procedure WMQueryEndSession, e implemente ela da maneira que você possa fechar sua aplicação, coloque o application.terminated, por exemplo.
unit uFrmDesligamento; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QueryEndSession; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { TForm1 }
procedure TForm1.WMQueryEndSession(var Msg: TWMQueryEndSession); begin if MessageDlg('Fecha o Windows ?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then Msg.Result := 0 else Msg.Result := 1; end;
end.
Att,
Wesley Y
Existem várias mensagens, do SO, que conseguimos detectar uma delas é o desligamento. Veja o Exemplo abaixo declare no Private do seu formulário a procedure WMQueryEndSession, e implemente ela da maneira que você possa fechar sua aplicação, coloque o application.terminated, por exemplo.
unit uFrmDesligamento; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs; type TForm1 = class(TForm) private { Private declarations } procedure WMQueryEndSession(var Msg: TWMQueryEndSession); message WM_QueryEndSession; public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} { TForm1 }
procedure TForm1.WMQueryEndSession(var Msg: TWMQueryEndSession); begin if MessageDlg('Fecha o Windows ?', mtConfirmation, [mbYes, mbNo], 0) = mrNo then Msg.Result := 0 else Msg.Result := 1; end;
end.
Att,
Wesley Y
GOSTEI 0
Silvia Berezin
28/06/2010
Oi Wesley
Infelizmente não funcionou. A aplicação continua na memoria quando peço para desligar a maquina
Entãol tenho que fechar a aplicação manualmente e depois desligar o computador
Silvia
GOSTEI 0
Wesley Yamazack
28/06/2010
Silvia,
Me mande o exemplo como você esta fazendo, crie um formulário e me mande para eu poder testar.
Att,
Wesley Y
Me mande o exemplo como você esta fazendo, crie um formulário e me mande para eu poder testar.
Att,
Wesley Y
GOSTEI 0
Wesley Yamazack
28/06/2010
Olá Sílvia,
Estou aguardando o exemplo.
Att,
Wesley Y
Estou aguardando o exemplo.
Att,
Wesley Y
GOSTEI 0
Wesley Yamazack
28/06/2010
Silvia
Estamos fechando este chamado, caso tenha alguma dúvida reabriremos o mesmo.
Att,
Wesley Y
Estamos fechando este chamado, caso tenha alguma dúvida reabriremos o mesmo.
Att,
Wesley Y
GOSTEI 0