Si può fare e credo che con Windows sia più semplice che con Linux.
Come ti dicevo la funzione SendMessage permette ad esempio di scrollare un form di un altro programma e di fare altre cose del genere. Io ho usato quella funzione in un solo caso per la comunicazione tra processi e per scrollare un oggetto in Delphi. Per cui non te la so spiegare bene.
Con la dll ad esempio potresti catturare tutto ciò che una persona scrive in Messenger oppure sostituirti alla tastiera eccetera.
La dll non viene caricata da un eventuale programma ma sei tu che glie la attacchi.