Application.AddMessageFilter(IMessageFilter) Metoda

Definicja

Dodaje filtr komunikatów do monitorowania Windows komunikatów podczas kierowania ich do miejsc docelowych.

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)

Parametry

value
IMessageFilter

Implementacja interfejsu IMessageFilter , który chcesz zainstalować.

Przykłady

Poniższy przykład kodu tworzy filtr komunikatu o nazwie TestMessageFilter. Ten filtr blokuje wszystkie komunikaty odnoszące się do lewego przycisku myszy. Aby można było użyć filtru komunikatów, należy podać implementację interfejsu 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

Uwagi

Użyj filtru komunikatów, aby zapobiec wywoływaniu określonych zdarzeń lub wykonywać specjalne operacje dla zdarzenia przed przekazaniem go do programu obsługi zdarzeń. Filtry komunikatów są unikatowe dla określonego wątku.

Aby zapobiec wysyłaniu komunikatu, value wystąpienie parametru przekazane do tej metody musi zastąpić PreFilterMessage metodę kodem w celu obsługi komunikatu. Metoda musi zwrócić falsewartość .

Przestroga

Dodanie filtrów komunikatów do pompy komunikatów dla aplikacji może obniżyć wydajność.

Dotyczy