Application.AddMessageFilter(IMessageFilter) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Fügt einen Meldungsfilter zum Überwachen von Windows-Meldungen beim Weiterleiten an das Ziel hinzu.
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)
Parameter
- value
- IMessageFilter
Die Implementierung der zu installierenden IMessageFilter-Schnittstelle.
Beispiele
Im folgenden Codebeispiel wird ein Nachrichtenfilter namens " TestMessageFilter
. Dieser Filter blockiert alle Nachrichten im Zusammenhang mit der linken Maustaste. Bevor Sie einen Nachrichtenfilter verwenden können, müssen Sie eine Implementierung für die IMessageFilter Schnittstelle bereitstellen.
// 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
Hinweise
Verwenden Sie einen Nachrichtenfilter, um zu verhindern, dass bestimmte Ereignisse ausgelöst werden oder spezielle Vorgänge für ein Ereignis ausführen, bevor es an einen Ereignishandler übergeben wird. Nachrichtenfilter sind für einen bestimmten Thread eindeutig.
Um zu verhindern, dass eine Nachricht übermittelt wird, muss die value
Parameterinstanz, die Sie an diese Methode übergeben, die Methode mit dem Code außer PreFilterMessage Kraft setzen, um die Nachricht zu behandeln. Die Methode muss false
zurückgeben.
Achtung
Das Hinzufügen von Nachrichtenfiltern zur Nachrichtenpumpe für eine Anwendung kann die Leistung beeinträchtigen.