Поделиться через


Application.AddMessageFilter(IMessageFilter) Метод

Определение

Добавляет фильтр сообщений для мониторинга сообщений Windows при их маршрутизации к местам назначения.

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)

Параметры

value
IMessageFilter

Реализация интерфейса IMessageFilter, который планируется установить.

Примеры

В следующем примере кода создается фильтр сообщений с именем TestMessageFilter. Этот фильтр блокирует все сообщения, связанные с левой кнопкой мыши. Прежде чем использовать фильтр сообщений, необходимо предоставить реализацию 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

Комментарии

Используйте фильтр сообщений, чтобы предотвратить возникновение определенных событий или выполнить специальные операции для события перед его передачей обработчику событий. Фильтры сообщений уникальны для определенного потока.

Чтобы предотвратить отправку сообщения, экземпляр параметра, передаваемый этому методу, value должен переопределить PreFilterMessage метод кодом для обработки сообщения. Метод должен вернуть false.

Внимание!

Добавление фильтров сообщений в конвейер сообщений для приложения может снизить производительность.

Применяется к