Application.AddMessageFilter(IMessageFilter) Metodo

Definizione

Aggiunge un filtro messaggi per il monitoraggio dei messaggi di Windows al momento dell'indirizzamento alle rispettive destinazioni.

public:
 static void AddMessageFilter(System::Windows::Forms::IMessageFilter ^ value);
public static void AddMessageFilter (System.Windows.Forms.IMessageFilter value);
public static void AddMessageFilter (System.Windows.Forms.IMessageFilter? value);
static member AddMessageFilter : System.Windows.Forms.IMessageFilter -> unit
Public Shared Sub AddMessageFilter (value As IMessageFilter)

Parametri

value
IMessageFilter

Implementazione dell'interfaccia IMessageFilter che si vuole installare.

Esempio

Nell'esempio di codice seguente viene creato un filtro di messaggio denominato TestMessageFilter. Questo filtro blocca tutti i messaggi relativi al pulsante del mouse sinistro. Prima di poter usare un filtro messaggi, è necessario fornire un'implementazione per l'interfaccia IMessageFilter .

// Creates a  message filter.
ref class TestMessageFilter: public IMessageFilter
{
public:
   [SecurityPermission(SecurityAction::LinkDemand, Flags = SecurityPermissionFlag::UnmanagedCode)]
   virtual bool PreFilterMessage( Message % m )
   {
      
      // Blocks all the messages relating to the left mouse button.
      if ( m.Msg >= 513 && m.Msg <= 515 )
      {
         Console::WriteLine( "Processing the messages : {0}", m.Msg );
         return true;
      }

      return false;
   }

};
// Creates a  message filter.
public class TestMessageFilter : IMessageFilter
{
    public bool PreFilterMessage(ref Message m)
    {
        // Blocks all the messages relating to the left mouse button.
        if (m.Msg >= 513 && m.Msg <= 515)
        {
            Console.WriteLine("Processing the messages : " + m.Msg);
            return true;
        }
        return false;
    }
}
' Creates a message filter.
<SecurityPermission(SecurityAction.LinkDemand, Flags := SecurityPermissionFlag.UnmanagedCode)> _
Public Class TestMessageFilter
    Implements IMessageFilter

    <SecurityPermission(SecurityAction.Demand)> _
    Public Function PreFilterMessage(ByRef m As System.Windows.Forms.Message) _
    As Boolean Implements IMessageFilter.PreFilterMessage
        ' Blocks all the messages relating to the left mouse button.
        If ((m.Msg >= 513) And (m.Msg <= 515)) Then
            Console.WriteLine("Processing the messages : " & m.Msg)
            Return True
        End If
        Return False
    End Function
End Class

Commenti

Usare un filtro di messaggio per impedire la generazione di eventi specifici o per eseguire operazioni speciali per un evento prima che venga passato a un gestore eventi. I filtri dei messaggi sono univoci per un thread specifico.

Per impedire l'invio di un messaggio, l'istanza value del parametro passata a questo metodo deve eseguire l'override PreFilterMessage del metodo con il codice per gestire il messaggio. Il metodo deve restituire false.

Attenzione

L'aggiunta di filtri di messaggio alla pompa dei messaggi per un'applicazione può ridurre le prestazioni.

Si applica a