Extension du shell : menu contextuel (win32 api)

Description

Définition:
-----------
Une extension du Shell est une DLL COM avec laquelle le Shell peut communiquer pour ajouter de nouvelles fonctionnalités. En plus d'exporter les fonctions DllRegisterServer(), DllUnregisterServer(), DllCanUnloadNow() et DllGetClassObject(), cette DLL COM doit aussi implémenter les interfaces IClassFactory et IShellExtInit. Dans notre cas, elle doit aussi implémenter l'interface IContextMenu. Ces dernières permettent d'ajouter des éléments au menu contextuel du Shell et d'exécuter les actions adéquates une fois l'un de ces éléments est choisi.

Fonctionnalités de notre extension:
-----------------------------------
- Ajouter au menu contextuel du Shell un sous-menu "Chemin" contenant deux éléments. Le premier élément sert à copier le chemin dans le clipboard. Le deuxième élément affiche ce chemin dans une MessageBox().
- Ce sous-menu s'applique à tous les types de fichiers, aux dossiers, au bureau et à l'arrière-plan des fenêtres de l'explorateur.
- Ajouter l'élément "Voir le fichier FCH" au menu contextuel du Shell pour les fichiers portant l'extension .FCH. Ce type de fichier est péalablement inscrit dans la base de registre au moment de l'enregistrement de notre DLL. Une fois cet élément est choisi, le fichier sera ouvert avec le Bloc-notes.
- Ajouter "Créer un nouveau fichier FCH" au menu contextuel du bureau ou de l'arrière-plan des fenêtres de l'explorateur. Quand cet élément est choisi un nouveau fichier FCH est créé sur le bureau ou dans le dossier courant de la fenêtre de l'explorateur.

Utilisation:
------------
Pour utiliser cette extension du Shell, il est péférable de coller notre DLL dans le dossier System32. On l'enregistre en tapant "regsvr32 racppextension.dll" dans "l'invite de commandes". Sous Vista, ce dernier doit être exécuté en tant qu'administrateur. Si cette DLL se trouve dans un dossier différent de system32, il faudra fournir son chemin complet. On peut vérifier le fonctionnement de notre extension en faisant un clic droit sur le bureau par exemple. Dans le menu contextuel qui apparait, on verra les éléments nouvellement ajoutés. Pour déenregistrer notre DLL, il suffira de taper "regsvr32 -u racppextension.dll". Tout a été testé sans problème sous XP et Vista.

Code:
-----
Ce code source est un exemple de création de DLL Objet COM sans faire appel aux MFC ni aux ATL. Il s'agit donc d'un projet DLL normale réalisé avec Visual C/C++ 2005. Il est facilement adaptable aux autres outils car il est 100% Win32 API. L'icone par défaut de notre type de fichier .FCH est incluse comme ressource à la DLL. La gestion des erreurs est minimale dans ce code pour raison de clarté. Pour tester directement la DLL du zip,renommez la en racppextension.dll.

Tous les commentaires, remarques ou questions sont les bienvenus.

Source / Exemple :


Voir le zip.

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.