Capturar eventos del mouse de cada componente

Tengo un problema con MouseEvents en mi aplicación WinForm C #.

Quiero tenertodo el mouse hace clic en mi aplicación, pero no quiero poner un oyente en cada componente secundario ni usar el gancho del mouse de Windows.

En Flash, pude poner un oyente en el escenario para obtener todos los eventos de Mouse en la película.

¿Existe tal cosa en C #? ¿Un MouseListener global?

Editar

Creo esta clase desde IMessageFilter y utilicé Application.AddMessageFilter.

public class GlobalMouseHandler : IMessageFilter{

    private const int WM_LBUTTONDOWN = 0x201;

    public bool PreFilterMessage(ref Message m){
        if (m.Msg == WM_LBUTTONDOWN) {
            // Do stuffs
        }
        return false;
    }
}

Y ponga este código en los Controles que necesitan escuchar clics globales:

GlobalMouseHandler globalClick = new GlobalMouseHandler();
Application.AddMessageFilter(globalClick);

Respuestas a la pregunta(4)

Su respuesta a la pregunta