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"; } }