Lier votre prog a internet explorer via le menu contextuel


Description

Bon, ça 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. C'est ce genre de chose que l'on cherche à faire ici.

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 on est sur vbfrance, 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 :

-----------------------------------------------------------------------------------------------------

1ere étape : 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é « 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 a simplifier l'explication.

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

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

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\test2
Default : Chemin_de_votre_dossier & "\ScriptEX2.html"
Contexts : 0x1

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\MenuExt\test3
Default : Chemin_de_votre_dossier & "\ScriptEX3.html"
Contexts : 0x10

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.

-----------------------------------------------------------------------------------------------------

_2eme étape : Création de l’activeX :

Ouvrez donc visual basic et créer 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és par IE. Voyons donc la suite =)

-----------------------------------------------------------------------------------------------------

_3eme étape : 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 fenetre, « 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

-----------------------------------------------------------------------------------------------------

_4eme étape : 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.

Conclusion :


Remarques, critiques, insultes... lachez vous !
Je suis pas très pedagogue, donc si vous pensez qu'il faut remanier, modifier, refaire quelquechose pour ammeliorer la comprehension, AIDEZ MOI !!! lol :)

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.