Application.AddMessageFilter(IMessageFilter) Methode

Definition

Fügt einen Nachrichtenfilter hinzu, um Windows Nachrichten zu überwachen, während sie an ihre Ziele weitergeleitet werden.

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)

Parameter

value
IMessageFilter

Die Implementierung der Schnittstelle, die IMessageFilter Sie installieren möchten.

Beispiele

Im folgenden Codebeispiel wird ein Nachrichtenfilter erstellt, der aufgerufen wird TestMessageFilter. Dieser Filter blockiert alle Nachrichten, die sich auf die linke Maustaste beziehen. Bevor Sie einen Nachrichtenfilter verwenden können, müssen Sie eine Implementierung für die IMessageFilter Schnittstelle bereitstellen.

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

Hinweise

Verwenden Sie einen Nachrichtenfilter, um zu verhindern, dass bestimmte Ereignisse ausgelöst werden oder spezielle Vorgänge für ein Ereignis ausführen, bevor es an einen Ereignishandler übergeben wird. Nachrichtenfilter sind für einen bestimmten Thread eindeutig.

Um zu verhindern, dass eine Nachricht verteilt wird, muss die value Parameterinstanz, die Sie an diese Methode übergeben, die PreFilterMessage Methode mit dem Code überschreiben, um die Nachricht zu verarbeiten. Die Methode muss zurückgegeben werden false.

Vorsicht

Das Hinzufügen von Nachrichtenfiltern zur Nachrichtenpumpe für eine Anwendung kann die Leistung beeinträchtigen.

Gilt für: