Compartir vía


Application.AddMessageFilter(IMessageFilter) Método

Definición

Agrega un filtro de mensajes que controla los mensajes de Windows conforme se enrutan a sus destinos.

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)

Parámetros

value
IMessageFilter

Implementación de la interfaz IMessageFilter que se desea instalar.

Ejemplos

En el ejemplo de código siguiente se crea un filtro de mensaje denominado TestMessageFilter. Este filtro bloquea todos los mensajes relacionados con el botón izquierdo del mouse. Para poder usar un filtro de mensajes, debe proporcionar una implementación para la IMessageFilter interfaz .

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

Comentarios

Use un filtro de mensajes para evitar que se generen eventos específicos o para realizar operaciones especiales para un evento antes de pasarlos a un controlador de eventos. Los filtros de mensajes son únicos para un subproceso específico.

Para evitar que se envíe un mensaje, la value instancia de parámetro que se pasa a este método debe invalidar el PreFilterMessage método con el código para controlar el mensaje. El método debe devolver false.

Precaución

Agregar filtros de mensajes a la bomba de mensajes para una aplicación puede degradar el rendimiento.

Se aplica a