Un EXE activeX es un servidor de objetos que opera "fuera de proceso", es decir, cuando le pides crear un objeto, lo crea en un espacio de direcciones que no pertenece al programa cliente. Todas las llamadas a métodos y propiedades del objeto deben pasar a través de un código llamado "marshaller" que se encarga de verificar si el objeto esta físicamente en el mismo ordenador que el programa que lo ha creado para empaquetar los parámetros y hacerlo llegar al ordenador correspondiente. Esto permite que los objetos se puedan crear en ordenadores diferentes Una DLL activeX es algo parecido, con la diferencia que el objeto se crea en el mismo espacio de proceso que el programa que solicita el objeto. Esto no solo es más rapido (porque no requiere marshaling ni cambio de proceso) sino que no permite que los objetos se creen en otra maquina diferente a la que esta ejecutando el programa que consume el objeto. Esto es lo que hace que los EXEs se llamen out-of-process-servers y las DLLs se llamen in-process-servers... Si necesitas más detalles...