Application.AddMessageFilter(IMessageFilter) Metodo

Definizione

Aggiunge un filtro di messaggio per monitorare i messaggi Windows mentre vengono indirizzati alle destinazioni.

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 da installare.

Esempio

Nell'esempio di codice seguente viene creato un filtro di messaggio denominato TestMessageFilter. Questo filtro blocca tutti i messaggi relativi al pulsante sinistro del mouse. 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 messaggi 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 del PreFilterMessage metodo con il codice per gestire il messaggio. Il metodo deve restituire false.

Caution

L'aggiunta di filtri di messaggi al message pump per un'applicazione può ridurre le prestazioni.

Si applica a