Przechwytywanie i wysyłanie danych z klawiatury / myszy w C #

Szukam sposobu na wysyłanie i odbieranie informacji z klawiatury niezależnie od tego, na czym skupia się aplikacja. Pamiętam, jak w College'u zobaczyłem prezentację o starym interfejsie API systemu Windows, która pozwala zmienić pozycję kursora i wysłać odpowiednie kliknięcia.

Poza User32.dll istnieje sposób, aby to zrobić w ramach .net?