Application.AddMessageFilter(IMessageFilter) Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Menambahkan filter pesan untuk memantau pesan Windows saat dirutekan ke tujuannya.
public:
static void AddMessageFilter(System::Windows::Forms::IMessageFilter ^ value);
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
Implementasi antarmuka yang IMessageFilter ingin Anda instal.
Contoh
Contoh kode berikut membuat filter pesan yang disebut TestMessageFilter
. Filter ini memblokir semua pesan yang berkaitan dengan tombol mouse kiri. Sebelum dapat menggunakan filter pesan, Anda harus menyediakan implementasi untuk IMessageFilter antarmuka.
// 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
Keterangan
Gunakan filter pesan untuk mencegah peristiwa tertentu dinaikkan atau melakukan operasi khusus untuk peristiwa sebelum diteruskan ke penanganan aktivitas. Filter pesan unik untuk utas tertentu.
Untuk mencegah pesan dikirim, value
instans parameter yang Anda berikan ke metode ini harus mengambil alih PreFilterMessage metode dengan kode untuk menangani pesan. Metode harus mengembalikan false
.
Perhatian
Menambahkan filter pesan ke pompa pesan untuk aplikasi dapat menurunkan performa.