Je veux écrire un petit outil, qui fait ce qui suit:
Lorsque vous cliquez avec le bouton droit sur un fichier avec une certaine extension de fichier, le menu contextuel de l'Explorateur Windows affiche une entrée supplémentaire.
Lorsque vous cliquez sur cette entrée, un certain EXE est lancé avec ce fichier comme l'un de ses paramètres.
Je voudrais utiliser C # /. NET 2.0 pour cela. Si ce n'est pas possible, je pourrais aussi le faire avec C++/Win32.
Mes questions sont:
Vous devrez accéder au registre et ajouter une clé sous root\\File\\Shell
ou root\Folder\\Shell
, selon les éléments sur lesquels vous souhaitez que l'élément de menu soit visible.
Essayez cet article sur CodeProject , c'est très utile.
Edit: Il y a n autre article ici qui peut être utile.
Par ailleurs, l'utilisation des extensions .NET pour Shell n'est pas prise en charge, en raison de l'incapacité actuelle d'héberger plusieurs versions d'exécution dans le même processus (.NET 4 lèvera cette restriction).
Considérez le cas où vous avez deux extensions Shell; un pour .NET 3.5, un pour .NET 1. Quel runtime sera chargé dans votre processus? Eh bien, c'est plus ou moins aléatoire - cela dépend de l'extension Shell chargée en premier. Parfois, il peut s'agir du runtime 2.0, parfois du runtime 1.1.
C'est également un problème si un programme .NET crée des boîtes de dialogue de fichier communes; votre extension Shell peut se charger ou non, et peut ou non s'exécuter avec la version d'exécution correcte.
En tant que tel, si vous descendez le route d'extension Shell vous devez utiliser natif C++/COM/Win32.