Application.AddMessageFilter(IMessageFilter) Método

Definição

Adiciona um filtro de mensagens para monitorizar as mensagens do Windows à medida que são encaminhadas para os seus 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

A implementação da IMessageFilter interface que queres instalar.

Exemplos

O seguinte exemplo de código cria um filtro de mensagens chamado TestMessageFilter. Este filtro bloqueia todas as mensagens relacionadas com o botão esquerdo do rato. Antes de poder usar um filtro de mensagens, deve fornecer uma implementação para a IMessageFilter interface.

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

Observações

Use um filtro de mensagens para evitar que eventos específicos sejam levantados ou para realizar operações especiais para um evento antes de este ser passado para um gestor de eventos. Os filtros de mensagens são únicos para um tópico específico.

Para evitar que uma mensagem seja despachada, a value instância de parâmetros que passa para este método tem de sobrescrever o PreFilterMessage método com o código para tratar a mensagem. O método deve devolver false.

Caution

Adicionar filtros de mensagem à bomba de mensagens de uma aplicação pode degradar o desempenho.

Aplica-se a