Application.AddMessageFilter(IMessageFilter) Application.AddMessageFilter(IMessageFilter) Application.AddMessageFilter(IMessageFilter) Application.AddMessageFilter(IMessageFilter) Method

定义

添加消息筛选器以便在向目标传送 Windows 消息时监视这些消息。Adds a message filter to monitor Windows messages as they are routed to their destinations.

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 IMessageFilter IMessageFilter IMessageFilter

要安装的 IMessageFilter 接口的实现。The implementation of the IMessageFilter interface you want to install.

示例

下面的代码示例创建一个名为 @no__t 的消息筛选器。The following code example creates a message filter called TestMessageFilter. 此筛选器阻止与鼠标左键相关的所有消息。This filter blocks all messages relating to the left mouse button. 在可以使用消息筛选器之前,必须提供 IMessageFilter 接口的实现。Before you can use a message filter, you must provide an implementation for the 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.
[SecurityPermission(SecurityAction.LinkDemand, Flags = SecurityPermissionFlag.UnmanagedCode)]
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 a message filter to prevent specific events from being raised or to perform special operations for an event before it is passed to an event handler. 消息筛选器对于特定线程是唯一的。Message filters are unique to a specific thread.

若要防止消息被调度,传递给此方法的 @no__t 0 参数实例必须使用用于处理消息的代码重写 PreFilterMessage 方法。To prevent a message from being dispatched, the value parameter instance that you pass to this method must override the PreFilterMessage method with the code to handle the message. 该方法必须返回 falseThe method must return false.

注意

将消息筛选器添加到应用程序的消息泵会降低性能。Adding message filters to the message pump for an application can degrade performance.

安全性

SecurityPermission
供直接调用方调用非托管代码。for the immediate caller to call unmanaged code. 关联的枚举: UnmanagedCodeAssociated enumeration: UnmanagedCode

适用于