Application.AddMessageFilter(IMessageFilter) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Přidá filtr zpráv pro monitorování Windows zpráv při směrování do cílů.
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
Implementace IMessageFilter rozhraní, které chcete nainstalovat.
Příklady
Následující příklad kódu vytvoří filtr zpráv s názvem TestMessageFilter
. Tento filtr blokuje všechny zprávy týkající se levého tlačítka myši. Než budete moct použít filtr zpráv, musíte zadat implementaci rozhraní 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
Poznámky
Filtr zpráv slouží k zabránění vyvolání konkrétních událostí nebo provádění speciálních operací události před předáním obslužné rutině události. Filtry zpráv jsou jedinečné pro konkrétní vlákno.
Aby se zabránilo odeslání zprávy, musí instance parametru, kterou předáte této metodě, value
přepsat PreFilterMessage metodu kódem pro zpracování zprávy. Metoda musí vrátit false
.
Upozornění
Přidání filtrů zpráv do čerpadla zpráv pro aplikaci může snížit výkon.