# ActiveX

ActiveX désigne l'une des technologies dépréciées du Component Object Model de Microsoft avec COM+ et Distributed COM utilisées en programmation pour permettre le dialogue entre programmes.

## Description

Les ActiveX se déclinent sous forme de contrôles, de documents et de scripts.
Un contrôle ActiveX est un fichier portant l'extension « .ocx ». Ces fichiers contiennent des programmes encapsulés dynamiques (à l'instar des DLL) se comportant comme des classes (ce qui signifie que l'on peut les instancier comme des objets), c'est-à-dire que ce sont des composants logiciels intégrables dans d'autres programmes/logiciels tels que des bibliothèques externes.
Pour les rendre accessibles, on peut les déclarer formellement au système (Microsoft Windows en l'occurrence) ou simplement les livrer avec un logiciel. Mais pour pouvoir les utiliser dans un logiciel, on doit obligatoirement les déclarer à ce dernier lors de la création du logiciel. Lors de la compilation du logiciel (c'est-à-dire de la transformation du programme en fichier exécutable), ces composants ne seront pas intégrés au programme mais liés, et donc, resteront extérieurs au programme l'utilisant. Par conséquent, ces composants peuvent rester disponibles pour d'autres programmes. Ils sont donc hautement réutilisables et utilisables simultanément par plusieurs programmes, ce qui constitue tout leur intérêt.
Contrairement aux DLL (qui ne sont que des bibliothèques partagées de fonctions et donc, à lier également au programme lors de sa conception), les contrôles ActiveX sont de véritables petits logiciels indépendants (mais dynamiques et encapsulés, donc, connectables à d'autres) qui peuvent avoir ou non, une interface graphique, non seulement lors du fonctionnement du logiciel les utilisant mais également lors de la création (dans l'IDE) afin d'aider le développeur à l'utiliser ou le configurer.
Ces caractéristiques singulières en font donc des objets particulièrement flexibles, pratiques et appréciés des développeurs pour leur simplicité d'utilisation.
Tout comme les classes, ils sont principalement constitués de propriétés (i.e., de variables publiques contrôlées par des fonctions en entrée et/ou en sortie), de méthodes (c'est-à-dire, de fonctions ou procédures publiques) et d’événements (i.e., de fonctions/procédures de surveillance d'états). On peut donc les créer (i.e., les instancier) comme de simples objets. Mais outre une interface graphique, ils ont en plus la possibilité de contenir des données annexes telles que des images, des icônes… puisqu'ils sont « encapsulés ».
Concrètement, presque tous les éléments graphiques autres que ceux du système (que sont les fenêtres…) sont, la plupart du temps, des contrôles ActiveX. Par exemple, les boutons, les listes déroulantes, les menus ou même les fenêtres standard (ouvrir, enregistrer…) sont des OCX.
Leur développement se fait généralement avec Microsoft Visual Studio mais d'autres langages de programmation compatibles avec la technologie COM peuvent également en créer. C'est par exemple le cas du langage C++ ou du langage Delphi de Borland.
Les ActiveX peuvent être utilisés dans des pages web s'ils sont d'abord téléchargés, manuellement ou automatiquement, sur le poste client de l'utilisateur. Du fait de la grande intégration des ActiveX au système d'exploitation, cette forme d'utilisation constitue un problème de sécurité majeur avec les navigateurs. En effet, si l'utilisateur n'est pas informé de l'installation à distance d'un ActiveX, il est possible pour un développeur d'utiliser ce qui peut constituer une faille de sécurité pour implanter un code malveillant. C'est pourquoi il existe des procédures qui permettent à l'utilisateur de se prémunir d'une telle utilisation malveillante.

## Historique

C'est en octobre 1996 que le premier SDK pour ActiveX est disponible sous Mac, incluant un plugin pour Netscape Navigator. La compatibilité avec Solaris est annoncée pour l'année suivante.
Malgré les efforts de Microsoft pour rendre ActiveX multi-plateforme, la plupart des contrôles ActiveX ne fonctionnent pas sur toutes les plateformes, de sorte que l'utilisation de contrôles ActiveX pour mettre en œuvre les fonctionnalités essentielles d'une page web en limite l'utilité.
Bien que Microsoft ait fait des efforts considérables pour promouvoir l'aspect multi-plateforme d'ActiveX en publiant l'API, ces efforts ont finalement été vains, les contrôles ActiveX étant écrits en C ou C++ et compilés en assembleur pour Intel x86, ce qui les rend exécutables uniquement sur les machines Windows où ils peuvent appeler les API Win32 standard.
En 2012, Microsoft supprime le support ActiveX de l'édition Windows Store d'Internet Explorer 10 dans Windows 8.
En 2015, Microsoft sort Microsoft Edge, le remplaçant d'Internet Explorer sans support pour ActiveX, ce qui marque la fin de la technologie dans le développement du navigateur web de Microsoft.
En juillet 2017, la Corée du Sud utilise encore largement ActiveX, posant de sérieux problèmes de sécurité, de performances et de compatibilité. Le président Moon Jae-in a fait de la fin d'ActiveX une promesse de campagne.