Sdílet prostřednictvím


Application.AddMessageFilter(IMessageFilter) Metoda

Definice

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.

Platí pro