Sign in to follow this  
serginho_pv

Impedir Que O Form Seja Fejado Com Alt+f4

Recommended Posts

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;

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this