Compartilhar via


Application.AddMessageFilter(IMessageFilter) Método

Definição

Adiciona um filtro de mensagem para monitorar mensagens do Windows à medida que elas são direcionadas para 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 interface IMessageFilter que você deseja instalar.

Exemplos

O exemplo de código a seguir cria um filtro de mensagem chamado TestMessageFilter. Esse filtro bloqueia todas as mensagens relacionadas ao botão esquerdo do mouse. Antes de usar um filtro de mensagem, você 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

Comentários

Use um filtro de mensagem para impedir que eventos específicos sejam acionados ou para executar operações especiais para um evento antes que ele seja passado para um manipulador de eventos. Os filtros de mensagem são exclusivos para um thread específico.

Para impedir que uma mensagem seja enviada, a value instância de parâmetro que você passa para esse método deve substituir o PreFilterMessage método com o código para lidar com a mensagem. O método deve retornar false.

Cuidado

Adicionar filtros de mensagem à bomba de mensagem para um aplicativo pode prejudicar o desempenho.

Aplica-se a