# ActiveX

ActiveX es un entorno para definir componentes de software reusables de forma independiente del lenguaje de programación. Las aplicaciones de software pueden ser diseñadas por uno o más de esos componentes para así proveer su correspondiente funcionalidad.
ActiveX fue presentado en 1996 por Microsoft como una evolución de sus tecnologías Component Object Model (COM) y Object Linking and Embedding (OLE) y se usa generalmente en su sistema operativo Windows, aunque la tecnología como tal no está atada al mismo.
Muchas aplicaciones Microsoft Windows — incluyendo muchas del propio Microsoft como puedan ser Internet Explorer, Microsoft Office, Microsoft Visual Studio, y Windows Media Player — usan controles ActiveX para proveer sus juegos de funcionalidades y también encapsular su propia funcionalidad como controles ActiveX que así pueden ser empotrados en otras aplicaciones. Internet Explorer también permite empotrar sus propios controles ActiveX en páginas web.
El actual navegador de Microsoft, Microsoft Edge, no soporta esta tecnología.

## Controles ActiveX

Los controles Active X son pequeños bloques empleados para la creación de programas, que se pueden usar para crear aplicaciones distribuidas que funcionen a través de Internet empleando navegadores web. Algunos ejemplos incluyen aplicaciones para la recopilación de datos, para la visualización de determinados tipos de datos o para reproducir animaciones.
La idea de los controles Active X era buena en tanto que fueron diseñados con la finalidad de ser descargados y ejecutados por los navegadores web. Es lo que hacen los Java applets pero los controles Active X presentan limitaciones que no se encuentran en los Java applets:
* Los Java applets son capaces de ejecutarse en casi cualquier plataforma, mientras que los componentes ActiveX sólo operan oficialmente con el navegador web Internet Explorer, de Microsoft, y el sistema operativo Microsoft Windows. El Malware, como los virus informáticos o el spyware, podría infectar accidentalmente al usuario al visitar este cualquier sitio web contaminado o malicioso que gestione las descargas haciendo uso de controles ActiveX.
Los controles ActiveX se pueden programar en cualquier lenguaje con soporte para desarrollo de componentes COM, incluidos:
* C++ Tanto directamente como con la ayuda de librerías como ATL o MFC
* Borland Delphi
* Visual Basic
Algunos ejemplos de controles ActiveX son los command buttons, list boxes, dialog boxes, y el propio navegador web Internet Explorer.

## Historia

Cuando Microsoft se topó con la complejidad de OLE 2.0, y dado que en MFC contaban con un soporte de COM pobre, este decidió racionalizar las especificaciones para simplificarlas y le cambió el nombre a la tecnología, en 1996, llamándola ActiveX. Incluso después de dicha simplificación, los usuarios seguían requiriendo controles con los que implementar aproximadamente seis interfaces principales. Como respuesta a esta necesidad, Microsoft produjo asistentes, clases básicas de ATL, macros y extensiones para el lenguaje de programación C++, con el fin de hacer más accesible la implementación de los controles.
A partir de Internet Explorer 3.0 (1996), Microsoft cogió soporte para la inclusión de controles ActiveX en contenidos HTML. De ese modo, cuando el navegador web encontraba una página que definía un control ActiveX mediante una etiqueta HTML de tipo OBJECT, se descargaba e instalaba automáticamente el control, con poca o ninguna interacción por parte del usuario. Así se ampliaba la funcionalidad de la web, pero también se creaban nuevos problemas de seguridad (especialmente dada la falta de interacción del usuario). Además surgieron otras críticas, debido principalmente a que estos controles estaban pensados para funcionar sólo con Windows. Microsoft introdujo posteriormente medidas de seguridad para tratar de hacer más segura la navegación con ActiveX:
* firma digital de los paquetes de instalación (ejecutables y archivos Cabinet)
* los controles debían declararse a sí mismos como seguros para scripting
* configuración de seguridad predeterminada cada vez más segura
* mantenimiento, por parte de Internet Explorer, de una lista negra de controles dañinos

## Utilizar ActiveX en otras aplicaciones distintas a Internet Explorer

No siempre es posible utilizar Internet Explorer para ejecutar el contenido ActiveX (por ejemplo, en una instalación como Wine)
* FF ActiveX Host para ejecutar controles ActiveX con Mozilla Firefox (en Windows sólo).
* Control ActiveX para Mozilla fue actualizado por última vez a finales de 2005 y se ejecuta en Firefox 1.5.
* MediaWrap para Firefox fue actualizado por última vez el 12 de junio de 2008 y se ejecuta en las versiones 1.5 a 3.5.* de Firefox.

## Otras tecnologías ActiveX

ActiveX se encuentra en muchos otros productos de Microsoft. En 2009 siguen en uso:
* ActiveX Data Objects (ADO)
* Active Server Pages
* ActiveMovie, cuyo último nombre es DirectShow
* Active Messaging, al que luego le pusieron Collaboration Data Objects
* Active Scripting, para hacer scripting con objetos ActiveX
* ActiveX Streaming Format (ASF), al que le pusieron luego Advanced Streaming Format, y más tarde Advanced Systems Format