Application.AddMessageFilter(IMessageFilter) Metod

Definition

Lägger till ett meddelandefilter för att övervaka Windows meddelanden när de dirigeras till sina mål.

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)

Parametrar

value
IMessageFilter

Implementeringen av det IMessageFilter gränssnitt som du vill installera.

Exempel

I följande kodexempel skapas ett meddelandefilter med namnet TestMessageFilter. Det här filtret blockerar alla meddelanden som rör den vänstra musknappen. Innan du kan använda ett meddelandefilter måste du ange en implementering för IMessageFilter gränssnittet.

// 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

Kommentarer

Använd ett meddelandefilter för att förhindra att specifika händelser utlöses eller för att utföra särskilda åtgärder för en händelse innan den skickas till en händelsehanterare. Meddelandefilter är unika för en specifik tråd.

För att förhindra att ett meddelande skickas måste parameterinstansen value som du skickar till den PreFilterMessage här metoden åsidosätta metoden med koden för att hantera meddelandet. Metoden måste returnera false.

Caution

Om du lägger till meddelandefilter i meddelandepumpen för ett program kan prestanda försämras.

Gäller för