Newsgroup: it.comp.lang.delphi
Titolo: ALT + F4

C'è un comando per disabilitare la combinazione ALT + F4 (che se non sbaglio
mi chiude l'applicazione corrente) ?
Ho letto molte FAQ e ho trovato il modo di disabilitare varie combinazioni
di tasti
come CTRL ALT CANC   o   ALT TAB   ecc.
Purtroppo non sono riuscito a trovare quella che mi serve.
Grazie.

 sbaglio mi chiude l'applicazione corrente) ?
Se cerchi un modo per non chiudere la tua applicazione, guarda l'evento
OnClose della tua main form: Action := caNone;
Se invece stai cercando un modo per impedire che, tramite la combinazione
ALT+F4 venga chiuso _qualsiasi_ programma, allora ci sono almeno 2 vie:
1. hook di sistema (WH_GETMESSAGE, che filtra i messaggi WM_KEYDOWN),
abbastanza complesso nella gestione del messaggio. 
2. Registrare un Hotkey ALT-F4, di cui ti fornisco un esempio abbastanza
completo: 
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
type
  TForm1 = class(TForm)
    procedure FormCreate(Sender: TObject);
    procedure FormClose(Sender: TObject; var Action: TCloseAction);
  private
    Procedure HandleHotkey (var m : tmessage); message WM_HOTKEY;
  public
  end;
CONST ID_HOTKEY = 1;
procedure TForm1.FormCreate(Sender: TObject);
begin
  RegisterHotkey (handle, ID_HOTKEY, MOD_ALT, vk_f4);
end;
//////////////////////////////////////////////////////////////////////////
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  UnRegisterHotkey (handle, ID_HOTKEY);
end;
//////////////////////////////////////////////////////////////////////////
Procedure ForceForeground (hWnd : HWND);
Begin
 PostMessage (GetDesktopWindow,WM_SYSCOMMAND, SC_HOTKEY, hWnd);
End;
//////////////////////////////////////////////////////////////////////////
Procedure TForm1.HandleHotkey(var m: tmessage);
var
  active_wnd : HWND;
  active_wnd_class,
  active_wnd_text : array[0..255] of char;
Begin
if m.Msg = WM_HOTKEY then
if m.WParam = ID_HOTKEY then
if m.LParamLo = MOD_ALT then
if m.LParamHi = VK_F4 then begin
  active_wnd := GetForegroundWindow();
  GetClassName ( active_wnd,
    	    	     @active_wnd_class,
                 length (active_wnd_class)-1);
  GetWindowText (active_wnd,
                 @active_wnd_text,
                 length (active_wnd_text)-1);
                 ForceForeground (self.handle);
  if MessageDlg ( 'ALT-F4 premuto nella finestra' +#13+#10
                        + ' ['  + active_wnd_class +']'
                        + ' "' + active_wnd_text +'"' +#13+#10
                        + 'Chiudere veramente la finestra originale?',
                  mtConfirmation,
                  [mbYes,mbNo],
                  0 ) = mrYes then begin
        PostMessage (active_wnd, WM_CLOSE, 0, 0);
  end;
  ForceForeground (active_wnd);
end;
End;
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////
Ciao!!
Davide DG.
-- 
All resistance is futile! Prepare to be disassembled !
 Usate sempre font a larghezza fissa per guardare
 estratti di codice nei miei post.

 abbastanza complesso nella gestione del messaggio.
forse quello che sto per suggerire non funziona, anche se a rigor di logica
dovrebbe funzionare ... dovrei provare.
Hook Systemwide di tastiera che richiama dal remoto GetAsyncKeyState().
Ciao
--
- Carlo -
c.b...@libero.it

 OnClose della tua main form: Action := caNone;
Mi è sufficiente impedire che venga chiusa la mia applicazione; potresti
darmi maggiori informazioni su cosa devo scrivere nella procedura OnClose?
(ho fatto dei tentativi senza successo).
P.S. gli altri suggerimenti sono decisamente ancora fuori dalla mia portata.
:-O

darmi maggiori informazioni su cosa devo scrivere nella procedura OnClose?
Action := caNone;
-- 
Andrea Laforgia (
walkie...@libero.it
)
"Usenet is a strange place" [Dennis Ritchie]


OK grazie ho risolto e funziona (Mi ero un po' intrecciato tra 2 form in
quanto con l'OnClose di una delle form mi si bloccava l'altra).
Prima o poi ci capirò qualcosa anch'io   :-((