avril
2010
A travers plusieurs recherches sur le net, j’ai pu m’apercevoir qu’à première vue, la création d’un addin pour IE doit se faire en C++. Loin de moi de dénigrer se langage, mais quand c’est possible je préfère développer en C#. Et heureusement pour nous, Pavel Zolnikov à convertit les librairies C++ nécessaires à la création d’un addin pour IE en C#.
Il en a d’ailleurs fait un excellent article sur CodeProject.
La partie qui nous intéresse est la classe BandObject. C’est grâce à celle-ci que l’on va pouvoir créer un addin pour IE.
En effet, il suffira de créer une classe héritant de BandObject, de préciser un Guid ainsi que quelques paramètres via un attribut, et vous aurez votre toolbar. Vide au début, mais il ne tient qu’à vous de la remplir avec un ToolStrip et quelques boutons
Christophe Geers en a fait un article très intéressant sur son blog, détaillant le processus du début à la fin tout en résolvant les innombrables problèmes qui ne manquent pas de survenir.
Et pour finir pour les tutoriels, un article sur CodeProjet de Sharon Salmon, qui reprend les articles vu plus haut tout en rendant les choses plus simples, notamment en centralisant dans une classe statique les données telles que le GUID de l’addin, son nom, etc. Il Implémente aussi une classe Installer spéciale pour les addins de IE, nous évitant ainsi la tâche ardue et complexe d’enregistrer notre addin dans la base de registre afin qu’Internet Explorer le prenne en compte.
Maintenant quelques trucs et astuces.
En effet, étant donné que nous construisons un addin pour IE, certaines choses sont interdites/limitées. Je n’ai par exemple pas réussi à utiliser un fichier de configuration (app.config), mais peut être n’ai-je pas assez cherché.
Par contre, la classe BackgroundWorker fonctionne, évitant ainsi de freezer IE à chaque lancement si notre addin va chercher des informations sur un fichier distant par exemple. Car IE instancie chacun de ses addins lors de son lancement, et ne finit lui même de charger que lorsque tout ses addins ont finis, rendant son utilisation impossible si les addins sont trop nombreux ou prennent trop de temps à s’instancier.
Pour ceux qui voudraient que leur addin ait leur toolbar bien à eux, vous pouvez jouer avec la propriété dwModeFlags de la classe BandObject, en particulier dans sa méthode GetBandInfo.
D’après mes recherches, DBIMF.ADDTOFRONT permettrait de pouvoir déplacer l’addin parmi les barres d’outils (quand celles-ci ne sont pas vérrouillées, Affichage -> Barre d’outils -> Verrouiler les barre d’outils) tandis que DBIMF.BREAK permettrait à l’addin d’avoir sa toolbar. Mais ces valeurs étant prévues pour IE6, elles ne réagissent pas très bien avec IE7 et 8, mêmes si j’ai réussi à déplacer mon addin je n’ai jamais pu lui faire prendre la forme d’une toolbar complète.
Voilà, j’espère avoir réussi à vous aider dans la création d’un addin pour Internet Explorer