CodeS-SourceS
Rechercher un code, un tuto, une réponse

Lier votre application à internet explorer via le menu contextuel

Août 2017


Lier votre application à internet explorer via le menu contextuel



Introduction


Bon, cela faisait pas mal de temps que je cherchais à faire cela, sans succès.
Si vous ne comprenez pas ce que l'on cherche à faire, installez par exemple la google toolbar ou un téléchargeur quelconque (type flashget, etc), et voyez les liens ajoutés au clic droit. On cherche en clair, à mettre en place des plugins persos à appeler par le clic droit d'Internet Explorer.

Ajouter un élément au menu est simple, mais y ajouter une action à effectuer est une autre histoire.


En effet :

1er problème :
Internet explorer ne permet pas de lancer directement une application via ce menu, ce qui peut se comprendre pour une raison de sécurité.

Solution => Nous allons donc passer par une page html contenant un javascript ou un vbscript .
(ici un vbs, car c'est le sujet, non?).

2eme problème : Lancer une application via un script peut se faire, mais pas avec un minimum de sécurité configuré

Solution =>Nous allons donc créer un activeX intermédiaire, qui, lui, appellera notre application. On pourra d'ailleurs, si les besoins le permette, s'arrêter à cette étape, et tout gérer dans l'activeX, à vous de voir selon vos besoin.

Pour ce petit tuto, on s'arrêtera à l'activeX, car une fois que les informations sont récupérées, je pense que c'est a vous de gérer le reste.

Lancer votre application avec ces informations en argument puis gérer ces derniers selon vos besoin, ou utiliser le hooking pour détecter une instance de votre application et lui envoyer les informations. Je verrais si il est nécessaire de faire un autre tuto à ce propos, mais normalement vous avez tout ce que vous faut sur le web ^^ :)

Voyons donc tout ça concrètement, pas à pas.

L'ajout de vos éléments au menu contextuel d'IE


Ces informations sont à rentrer dans cette clé :
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\ Votre clé
Comme valeur par défaut, nous mettons le chemin complet de notre script vbs. Nous ajoutons ensuite dans cette clé, une valeur DWORD nommée "Contexts". Cette valeur déterminera sur quels éléments notre menu doit proposer notre action :

Fenêtre : 0x1
Image : 0x2
Contrôle : 0x4
Tableaux : 0x8
Sélection de texte : 0x10
Lien : 0x20

Ces valeurs peuvent être combinées en faisant un OU logique entre les valeurs, mais pour notre exemple, nous utiliserons un type de contexte par chaîne, de manière à simplifier l'explication.

Pour notre exemple, on va créer quatre clés, qui pointeront vers 4 scripts différents. Définissez un dossier ou l'on mettra ces 4 scripts, puis créez ces 4 clés :

Clic droit sur lien :
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\test1
Default : Chemin_de_votre_dossier & "\ScriptEX1.html"
Contexts : 0x20

Clic droit n'importe ou sur la page (sur "rien"):
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\test2
Default : Chemin_de_votre_dossier & "\ScriptEX2.html"
Contexts : 0x1

Clic droit sur du texte selectionné :
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\test3
Default : Chemin_de_votre_dossier & "\ScriptEX3.html"
Contexts : 0x10

Clic droit sur une image :
HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\test4
Default : Chemin_de_votre_dossier & "\ScriptEX4.html"
Contexts : 0x2

Voila, lancez une nouvelle fenêtre Internet Explorer, et testez. Si vous avez tout bien rentré, un élément s'ajoute au menu contextuel lorsque vous faites un clic droit sur les éléments suivant : Liens, Fenêtre, Sélection de texte et Images. Ces derniers ne sont bien sur pas encore fonctionnels, mais visibles.

Création de l'activeX


Ouvrez donc visual basic et créez un nouveau projet DLL activeX , que vous nommerez EXCOM.
Copiez cette procédure dans la classe crée par défaut "Class1":

Sub Principal(ByVal str As String)
MsgBox str
End Sub


Compilez avec comme nom de fichier : EXCOM.dll
Et oui, on ne va pas plus loin, ceci n'est qu'un exemple, le but étant d'accéder aux informations envoyées par IE. Voyons donc la suite =)

Création des scripts VBS


Ouvrez un éditeur de texte, et copier ces 4 codes :

1er script (gestion des liens): scriptEX1.html
<SCRIPT LANGUAGE="VBScript">
'gestion des liens
set Readah=CreateObject("EXCOM.Class1")
a=external.menuArguments.event.srcElement.innerText 'texte du lien
b=external.menuArguments.event.srcElement.href 'url du lien
call Readah.Principal("Texte du lien : " & a & vbcrlf & "Url du lien : " & b & vbcrlf)
</SCRIPT>

2eme script (clic sur la fenêtre, "dans le vide") : scriptEX2.html
<SCRIPT LANGUAGE="VBScript">
'Gestion fenetre
set Readah=CreateObject("EXCOM.Class1")
a=external.menuArguments.location.hostname 'nom d'hote
b=external.menuArguments.location.href 'url en cours
c=external.menuArguments.event.srcElement.innerText 'texte de la page
call Readah.Principal("Hote : " & a & vbcrlf & "Url en cours : " & b & vbcrlf & " Texte de la page : " & c & vbcrlf)
</SCRIPT>

3eme script (clic sur un texte selectionné) : scriptEX3.html
<SCRIPT LANGUAGE="VBScript">
'gestion texte selectionné
set Readah=CreateObject("EXCOM.Class1")
d=window.external.menuArguments.document.selection.createRange().text 'texte selectionné
call Readah.Principal("Texte Selectionné : " & d & vbcrlf)
</SCRIPT>

4eme script (clic sur une image) : scriptEX4.html
<SCRIPT LANGUAGE="VBScript">
'gestion image
set Readah=CreateObject("EXCOM.Class1")
a=external.menuArguments.event.srcElement.href 'url de l'image
call Readah.Principal("Url de l'image : " & a & vbcrlf)
</SCRIPT>

Copiez ces 4 fichier dans le dossier que vous avez défini à l'étape 1 (Ajout de vos éléments au menu contextuel d'IE)

Mise en place de l'activeX


Exécuter la commande regsvr32 pour registrer votre activeX :

regsvr32 "Chemin_du_dossier_contenant_la_dll\EXCOM.dll"

Et voila, lancez une nouvelle instance d'Internet explorer, et testez. Il ne vous reste plus qu'à personnaliser tout ça pour l'utiliser à votre guise.
J'espère que cela vous sera utile.

A voir également

Publié par hvb.
Ce document intitulé «  Lier votre application à internet explorer via le menu contextuel  » issu de CodeS-SourceS (codes-sources.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Les bibliothèques de types (typelib, tlb) et le langage odl
Les objets légers : un concept pour optimiser les classes vb