Вы можете обнаружить уведомление Windows, прежде чем оно будет отправлено в элемент управления с фокусом через интерфейс IMessageFilter.Сделайте так, чтобы это выглядело примерно так:
public partial class Form1 : Form, IMessageFilter {
public Form1() {
InitializeComponent();
Application.AddMessageFilter(this);
this.FormClosed += delegate { Application.RemoveMessageFilter(this); };
}
public bool PreFilterMessage(ref Message m) {
// Trap WM_LBUTTONDOWN
if (m.Msg == 0x201) {
System.Diagnostics.Debug.WriteLine("BEEP!");
}
return false;
}
}
Это работает для любой формы в вашем проекте, а не только для основной.