Csharp/C Sharp by API/System.Windows.Forms/IMessageFilter
extends IMessageFilter
<source lang="csharp">
using System; using System.Threading; using System.Windows.Forms;
public class BlockLeftMouseButtonMessageFilter : IMessageFilter {
const int WM_LBUTTONDOWN = 0x201; public bool PreFilterMessage(ref Message m) { if(m.Msg == WM_LBUTTONDOWN) { Exception LeftButtonDownException; LeftButtonDownException = new Exception("The left mouse button was pressed."); Application.OnThreadException(LeftButtonDownException); return true; } return false; }
}
public class ApplicationEventHandlerClass {
public void OnThreadException(object sender, ThreadExceptionEventArgs e) { Exception LeftButtonDownException; LeftButtonDownException = e.Exception; Console.WriteLine(LeftButtonDownException.Message); }
}
public class MainForm : Form {
public static void Main() { ApplicationEventHandlerClass AppEvents = new ApplicationEventHandlerClass(); MainForm MyForm = new MainForm(); BlockLeftMouseButtonMessageFilter MsgFilter = new BlockLeftMouseButtonMessageFilter(); Application.AddMessageFilter(MsgFilter); Application.ThreadException += new ThreadExceptionEventHandler(AppEvents.OnThreadException); Application.Run(MyForm); } public MainForm() { Text = "Application Exception Test"; }
}
</source>