2009-06-24 8 views
2

J'ai un programme qui passe des arguments de ligne de commande à un fichier associé (c'est-à-dire l'extension de fichier associée) d'un exécutable. L'exécutable ne reçoit jamais les arguments. Cependant, si je démarre directement l'exécutable et lui transmets à la fois le chemin d'accès au fichier associé et les arguments, il reçoit à la fois le chemin du fichier et les arguments.Est-il possible de passer des arguments de ligne de commande à un exécutable via un fichier associé?

  • Système d'exploitation: Windows XP
  • Langage de programmation: C#

Je commence le fichier associé à l'aide:

System.Diagnostics.Process.Start(filepath, arguments) 

Merci d'avance pour toute l'assistance.

-edit

Fondamentalement, j'ai un interprète de langage de programmation qui doit recevoir des arguments de ligne de commande qui lui sont transmises par un programme C#.

Si je démarre un fichier de code à l'aide du programme C#, l'interpréteur démarre, mais ne reçoit pas les arguments de ligne de commande qui ont été transmis au fichier de code par le programme C#.

Donc, il y a un total de trois fichiers:

  1. l'interpréteur
  2. le fichier de code
  3. le programme en essayant de démarrer le fichier de code comme si elle était un programme

En outre, le démarrage direct de l'interpréteur n'est pas une option, car il ne se trouve pas au même chemin de fichier sur chaque ordinateur.

J'espère que cela est plus clair, mais je ne peux pas poster le code source à des restrictions légales.

+0

S'il vous plaît co.! Vous publiez un peu de source, car je ne comprends pas ce que vous cherchez. – bugmagnet

+0

Il me semble qu'il fait Process.Start ("fichier.xls", "arg1 arg2"); –

+1

Et ce qui fonctionne est Process.Start ("excel.exe", "fichier.xls arg1 arg2"); –

Répondre

1

Vous pouvez essayer (non testé) changer l'association de fichiers (dans le volet avancé) pour inclure% 2% 3 etc dans les arguments (normalement il comprend seulement% 1) - cependant, cela implique des changements au client, et (plus important encore) l'idée de passer des arguments à un document suppose que vous avez la même visionneuse (c'est-à-dire que les arguments sont sensés). IMO, une meilleure option est de lancer explicitement l'exe, en passant le doc (et les autres) comme arguments.

Exemple:

récepteur exe (montre que les arguments de commande reçus):

static class Program { 
    [System.STAThread] 
    static void Main(string[] args) { 
     System.Windows.Forms.MessageBox.Show(string.Join("|", args)); 
    } 
} 

Puis: a créé un « foo.flibble "fichier, clic droit/ouvrir et associer avec mon récepteur, est entré dans les associations de fichiers," flibble ", avancé," ouvrir ", modifier, et ajouté% 2% 3% 4

Puis dans un exe séparé:

Process.Start(@"c:\foo.flibble", "test of args"); 

qui montre:

c:\foo.flibble|test|of|args 

donc, ce a maintenant passé les arguments supplémentaires à l'exe via le document, mais beaucoup de configuration du client

+0

Merci, ça marche super! – Mackenzie

Questions connexes