Csharp/C Sharp/Windows/Message
Installing a Message Filter
using System;
using System.Windows.Forms;
public class BlockLeftMouseButtonMessageFilter : IMessageFilter
{
const int WM_LBUTTONDOWN = 0x201;
const int WM_LBUTTONUP = 0x202;
public bool PreFilterMessage(ref Message m)
{
if(m.Msg == WM_LBUTTONDOWN)
{
Console.WriteLine("The left mouse button is down.");
return true;
}
if(m.Msg == WM_LBUTTONUP)
{
Console.WriteLine("The left mouse button is up.");
return true;
}
return false;
}
}
public class MainForm : Form
{
public static void Main()
{
MainForm MyForm = new MainForm();
BlockLeftMouseButtonMessageFilter MsgFilter = new BlockLeftMouseButtonMessageFilter();
Application.AddMessageFilter(MsgFilter);
Application.Run(MyForm);
}
public MainForm()
{
Text = "Message Filter Test";
}
}
Removing an Installed Message Filter
using System;
using System.Windows.Forms;
public class BlockLeftMouseButtonMessageFilter : IMessageFilter
{
const int WM_LBUTTONDOWN = 0x201;
public bool PreFilterMessage(ref Message m) {
if(m.Msg == WM_LBUTTONDOWN)
{
Console.WriteLine("The left mouse button is down.");
Application.RemoveMessageFilter(this);
return true;
}
return false;
}
}
public class MainForm : Form
{
public static void Main()
{
MainForm MyForm = new MainForm();
BlockLeftMouseButtonMessageFilter MsgFilter = new BlockLeftMouseButtonMessageFilter();
Application.AddMessageFilter(MsgFilter);
Application.Run(MyForm);
}
public MainForm()
{
Text = "Message Filter Removal Test";
}
}