Originariamente inviato da mvent
Ecco, ho trovato anche questa funzione, da mettere sul form:

codice:
 Protected Overrides Function ProcessCmdKey _
       (ByRef msg As System.Windows.Forms.Message, _
        ByVal keyData As System.Windows.Forms.Keys) As Boolean

        '********************************************************
        'DA COMMENTARE IN RELEASE
        'questo:
        MsgBox(keyData & " " & keyData.ToString)
        'in fase di debug scrive nell'output le informazioni
        'sul tasto premuto, serve per identificare il valore 
        '"keydata" da inserire nella lista.
        '********************************************************

        If keyData = 262162 Then msg = Nothing 'tasto ALT
        If keyData = 262162 Then keyData = 0 'tasto ALT
      
  If keyData = 115 Then keyData = 0 'tasto F4
  If keyData = 115 Then msg = Nothing 'tasto F4

        Return MyBase.ProcessCmdKey(msg, keyData)

    End Function
riesce ad intercettare tutti i tasti ma ho provato a annullare le due variabili nel caso di pressione di ALT e di F4 e non funziona...

Intercetti i singoli tasti e non la combinazione, il valore è 262259. Inoltre devi lavorare su "msg" è non su "keyData" perchè il tasto è "contenuto" in msg, quindi per Alt+F4 basta una riga:
codice:
If keyData = 262259 Then msg = Nothing
In ogni caso, anche usando WndProc, puoi intervenire solo sul tuo programma mentre per tutto quello che è gestito direttamente da Windows devi usare per forza le sue API.
Ciao