1 votes

Comment puis-je ajouter des éléments à la coquille Windows (clic droit) ?

Je vais créer une application de bureau qui fonctionnera en arrière-plan, ce qui signifie pas de fenêtre visible, et j'aimerais qu'une option appelée : "Télécharger le texte" apparaisse lorsque l'utilisateur fait un clic droit sur un fichier.

Quelqu'un pourrait-il me guider dans la bonne direction ? Je dois également m'assurer qu'en cas de désinstallation du programme à tout moment, la modification de la coquille est également supprimée proprement.

L'application fonctionnera sous Windows XP, Windows Vista et Windows 7. Dans quelle mesure ces systèmes d'exploitation sont-ils différents pour gérer mon dilemme de coquille ?

4voto

Michael Petrotta Points 35647

Il s'agit d'une extension de coque. Vous avez balisé cette question avec l'étiquette C#; vous devriez savoir que écrire des extensions de coque dans un langage géré est fortement déconseillé:

Malheureusement, le C++ non managé est vraiment la seule solution ici.

Écrire des extensions de coque en processus en code managé est en fait une chose très dangereuse à faire car cela a pour effet d'injecter votre code géré (et le .NET Framework) dans chaque application sur la machine qui a une boîte de dialogue de fichier ouverte.

Les problèmes surviennent car seule une version du .NET Framework peut être chargée dans un processus à un moment donné (d'autres composants partagés tels que java et msxml ont la même propriété et donc la même restriction).

Si vous écrivez votre extension de coque en utilisant le .NET Framework 2.0 et qu'une application construite avec le .NET Framework 1.1 utilise une boîte de dialogue de fichier, votre extension de coque échouera car elle ne peut pas s'exécuter sur une version antérieure. Les choses peuvent empirer si votre extension de coque parvient à se charger dans un processus avant que le code managé d'une autre application ne le fasse : votre extension peut forcer une application existante sur une version de runtime différente de celle qu'elle attendait et causer son échec.

En raison de ces problèmes, nous conseillons vivement de ne pas utiliser une bibliothèque ou un runtime à instance unique par processus (comme le .NET Framework, java ou msxml) dans une extension de coque en processus.

Cela dit, des gens l'ont fait.

Voici un guide pour créer des extensions de coque, en utilisant C++.

1voto

Tobu Points 10101

Vous pourriez ajouter votre application au dossier Envoyer vers.

0voto

fupsduck Points 1775

Que diriez-vous d'un programme autonome utilisant SendTo ?

Installez l'exe dans "Program Files\mycompany\myprogram" et un raccourci vers l'exe dans le dossier SendTo. Ensuite, lorsque l'utilisateur clique avec le bouton droit sur un fichier, sélectionne Envoyer vers, puis sélectionne votre programme, votre exe sera exécuté par Windows et le chemin complet du nom de fichier sera transmis via argv[1]. S'ils sélectionnent n fichiers, ils seront dans argv[1]..argv[n].

Si vous souhaitez que votre programme soit invisible, ne rendez pas le formulaire par défaut visible. Vous pourriez éventuellement placer une icône dans la zone de notification pour que l'utilisateur puisse double-cliquer dessus pour voir la progression du téléchargement. Lorsque le téléchargement de argv[1] est terminé, traitez argv[2]...argv[n] s'ils existent, puis quittez. Pour désinstaller proprement, supprimez votre programme et le raccourci du dossier SendTo.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X