2010-01-14 4 views
1

J'ai ajouté un élément dans le menu contextuel de Windows Explorer en utilisant le registre. Je veux que lorsque l'utilisateur clique droit sur un fichier, puis clique sur mon élément de menu contextuel ajouté, puis une application doit exécuter ainsi que l'emplacement de ce fichier doit être disponible.effectuant deux tâches sur un clic droit d'un fichier, C#

Mon application est exécuté, mais je ne pouvais pas obtenir le chemin du fichier sur lequel je faites un clic droit

Répondre

4

Comment avez-vous exactement ajouter cet élément de menu contextuel? Vous devez passer le nom du fichier quelque part, ce qui est généralement fait en mettant %1 dans la ligne de commande à exécuter.

Donc, si la commande que vous êtes en cours d'exécution est

"C:\Program Files\MyCoolProgram\mcp.exe" 

il devrait être

"C:\Program Files\MyCoolProgram\mcp.exe" %1 
3

Jetez un oeil ici: A simple C# function to add context menu items in Explorer et notez cette partie:

AddContextMenuItem(".zip", "ZipStrip", 
    "Open with &ZipStrip", Application.ExecutablePath + " %1"); 

Cette façon dont vous recevrez votre chemin de fichier complet en tant que premier argument sur votre Main(string args[])

EDIT: Si vous devez traiter avec des arguments contenant des espaces blancs, essayez ceci:

AddContextMenuItem(".zip", "ZipStrip", 
    "Open with &ZipStrip", Application.ExecutablePath + " ""%1"""); 

De cette façon, vous argument sera joint entre guillemets, que la préservation des espaces blancs.

0

Le chemin est transmis en tant qu'arguments de ligne de commande. Au point d'entrée, vous pouvez y accéder en définissant un argument string[]:

static void Main(string[] args) { 
    // the path is passed in the `args` array. 
} 

Il devrait également être disponible en appelant Environment.GetCommandLineArgs method.