2010-01-17 4 views
2

Je voudrais écrire un programme C# .NET qui fera quelques transformations aux images sélectionnées. Après avoir sélectionné plusieurs images sur mon bureau (ou n'importe quel autre dossier windows) et cliqué dessus avec le bouton droit de la souris, j'aimerais voir mon programme dans le menu apparu. Comment puis-je insérer mon programme dans ce menu et l'exécuter quand on clique sur cette option? J'apprécierais un petit exemple de code.Comment insérer mon application dans le menu contextuel de Windows?

Merci d'avance!

Répondre

3

La meilleure façon de le faire est pas par le code, mais par les entrées de registre. Ajoutez une clé sous HKCR/filetype/Shell (où filetype est le type de fichier associé à l'extension de fichier, par exemple jpegfile). Le nom de la clé est votre option de menu (par exemple "Transformer"). Sous ceci, créez une clé nommée Command, et définissez la valeur de cette clé sur la ligne de commande de votre programme, par ex. c:\myprogram\myprogram.exe "%1" (le% 1 est où Explorer remplacera le nom de fichier du fichier cliqué avec le bouton droit).

+0

En fait, je veux que l'option "Transformer" soit automatiquement ajoutée au menu chaque fois que j'exécute le programme (et je vais lancer le programme au démarrage). Je ne veux pas entrer dans le registre et l'éditer chaque fois que je mets mon programme dans un autre ordinateur. –

+0

Je continuerais avec l'approche du registre: au démarrage du programme, vérifiez la présence de la clé et insérez-la si elle n'est pas déjà là. Vous pouvez utiliser les classes Microsoft.Win32.RegistryXxx pour cela. Je ne sais pas s'il y a une API pour "temporairement" ajouter des entrées au menu contextuel, ou pour obtenir un rappel (dans un processus séparé) pour intercepter/modifier quand le menu contextuel est affiché (je crois que vous pouvez le faire à partir d'une extension shell, mais vous devez ensuite charger votre extension dans Explorer, ce qui est généralement un paramètre de registre de toute façon!). Pardon. – itowlson

+0

OK, je comprends comment ajouter une clé au registre. Mais, je ne peux toujours pas comprendre le déroulement du programme. Dites que j'ai ajouté mon programme aux programmes de démarrage de Windows. Lorsque Windows démarre, mon programme démarre et ajoute une clé au registre. Ma première question est quelle devrait être la valeur de la clé de commande? Est-ce que ce devrait être un autre programme qui transforme l'image? Ou peut-être le même mon programme en quelque sorte? Ma deuxième question est la suivante: lorsque plusieurs fichiers sont sélectionnés, comment les noms sont-ils transmis au programme Transform? Merci beaucoup pour votre temps ! –

1

départ this question et this one ainsi

+0

Je ne crois pas que cela répond à l'intention de la question - ce n'est pas "comment configurer" ouvert avec "pour certaines extensions de fichiers", mais plutôt "comment exécuter des actions personnalisées". Par exemple, comment puis-je écrire une commande "mettre à jour ce dossier à partir du repo source". – dpurrington

+1

open est une action avec le nom "open". n'importe quelle action peut être appelée ouverte, ou ouverte peut être appelée n'importe quoi. Quoi qu'il en soit, la méthode pour faire "Custom Action" est la même, seulement vous l'appelez "Custom Action", pas "open". –

Questions connexes