Application.AddMessageFilter(IMessageFilter) Método
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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)
- value
- IMessageFilter
A implementação da interface IMessageFilter que você deseja instalar.
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
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
.
Atenção
Adicionar filtros de mensagem à bomba de mensagem para um aplicativo pode prejudicar o desempenho.
Produto | Versões |
---|---|
.NET Framework | 1.1, 2.0, 3.0, 3.5, 4.0, 4.5, 4.5.1, 4.5.2, 4.6, 4.6.1, 4.6.2, 4.7, 4.7.1, 4.7.2, 4.8 |
Windows Desktop | 3.0, 3.1, 5, 6, 7 |