Partager via


Application.AddMessageFilter(IMessageFilter) Méthode

Définition

Ajoute un filtre de messages permettant de surveiller les messages Windows lors de leur routage vers leur destination.

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)

Paramètres

value
IMessageFilter

Implémentation de l'interface IMessageFilter que vous souhaitez installer.

Exemples

L’exemple de code suivant crée un filtre de messages appelé TestMessageFilter. Ce filtre bloque tous les messages relatifs au bouton gauche de la souris. Avant de pouvoir utiliser un filtre de messages, vous devez fournir une implémentation pour l’interface 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

Remarques

Utilisez un filtre de messages pour empêcher la levée d’événements spécifiques ou pour effectuer des opérations spéciales pour un événement avant qu’il ne soit transmis à un gestionnaire d’événements. Les filtres de messages sont propres à un thread spécifique.

Pour empêcher la distribution d’un message, l’instance value de paramètre que vous passez à cette méthode doit remplacer la PreFilterMessage méthode par le code pour gérer le message. La méthode doit retourner false.

Attention

L’ajout de filtres de messages à la pompe de messages pour une application peut dégrader les performances.

S’applique à