Ir para conteúdo
Fórum Script Brasil
  • 0

Impedir Que O Form Seja Fejado Com Alt+f4


serginho_pv

Pergunta

Peguei a dica no site http://www.tecnobyte.com.br/dica7.html

Só tem um problema:

O usuário não consegue efetuar o logoff no Windows 2000 Professional de jeito nenhum.

Como resolver este problema? Já tentei algumas dicas de impedir que o programa apareça na barra de tarefas mas não obtive sucesso. A dica do Alt+F4 segue abaixo...

1. Declare um campo (variável) na seção private do Form:

private

FPodeFechar: boolean;

2. No evento OnCreate do form coloque:

FPodeFechar := false;

3. No evento OnCloseQuery do form coloque:

CanClose := FPodeFechar;

4. Coloque um botão no form e no seu evento Click coloque:

FPodeFechar := true;

Close;

Link para o comentário
Compartilhar em outros sites

1 resposta a esta questão

Posts Recomendados

  • 0
Peguei a dica no site http://www.tecnobyte.com.br/dica7.html

Só tem um problema:

O usuário não consegue efetuar o logoff no Windows 2000 Professional de jeito nenhum.

Como resolver este problema? Já tentei algumas dicas de impedir que o programa apareça na barra de tarefas mas não obtive sucesso.

serginho_pv, isso ocorre porque você não deixa sua aplicação encerrar quando o Windows tenta fechá-la. Voce tem completo controle sobre impedir ou não seu fechamento mas com base na variável interna que você utiliza.

Voce precisará monitorar uma outra mensagem que é enviada à aplicação quando o Windows deseja fechá-la, seja por um reinício, log-off ou desligamento. Essa mensagem não foi disponibilizada em forma de evento do form de modo que você tem que criar um tratador para ele. Na verdade existem duas mensagens que estão associadas a este evento do Windows: WM_QUERYENDSESSION e WM_ENDSESSION. Os nomes falam por si só. Mas na prática, você precisará monitorar apenas WM_ENDSESSION.

type
  TForm1 = class(TForm)
    ...
  private
    FPodeFechar: boolean;
    procedure WMEndSession(var Message :TMessage); message WM_ENDSESSION;
    ...
  end;
...

procedure TForm1.WMEndSession(var Message :TMessage);
begin
  FPodeFechar := BOOL(Message.WParam);
  Message.Result := 0;
end;

Quando o Windows enviar a mensagem para encerramento da sessão a sua aplicação, você atribuirá a sua variável de controle se o form pode ou não ser fechado. Message.WParam é um flag que indica se a sessão está ou não sendo encerrada (veja help).

Teste! Acredito que funcione - de qualquer modo o caminho é por ai.

Abraços

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...