Question


J'essaie de lancer l'application par défaut enregistrée pour une extension spécifiant un argument supplémentaire:

 ProcessStartInfo p = new ProcessStartInfo();
 p.Arguments = "myargument";
 p.FileName = "file.ext";
 Process.Start(p);

L'application commence à ouvrir correctement le fichier spécifié. Le problème est qu'il ne reçoit qu'un seul paramètre (le nom du fichier), ignorant totalement les "arguments" supplémentaires.
Est-il possible de faire ce que je veux? Est-ce que je fais quelque chose de mal?

Merci d'avance pour votre aide,
Paolo

Était-ce utile?

La solution

Je crois que cela est prévu. Dans les coulisses, Windows trouve l'application par défaut dans le registre et la création d'un nouveau processus et y transmet votre nom de fichier. J'obtiens le même comportement si je vais à une invite de commande et tape "argument filename.ext", que mes arguments ne sont pas transmis à la demande.

Ce que vous devez probablement faire, c'est trouver vous-même l'application par défaut en recherchant dans le registre. Ensuite, vous pouvez démarrer ce processus avec des arguments, au lieu d'essayer de commencer par FileType Association. Il y a une réponse ici sur la façon de trouver l'application par défaut dans le registre:

Rechercher l'application par défaut pour ouvrir un type de fichier particulier sur Windows

Autres conseils

Quel est exactement votre "argument", a-t-il des espaces, des barres oblique inverse, etc.?

    Process process = new Process();
    process.StartInfo.FileName = @"C:\process.exe";
    process.StartInfo.Arguments = @"-r -d something else";
    process.StartInfo.CreateNoWindow = false;
    process.StartInfo.UseShellExecute = false;
    process.Start();

Y a-t-il une raison pour laquelle vous ne pouvez pas démarrer l'application, puis utiliser l'extension et les arguments dans vos arguments?

Je pense qu'une méthode plus facile consiste à utiliser la commande cmd

 void LaunchAssociatedProgram(string filename) {
     Process.Start( @"cmd.exe", "/C start "+ filename );
 }

ÉDITER:

Je ne sais pas si cela fonctionne avec les arguments, mais c'est ce que je cherchais pour lancer un programme associé ...

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top