C # Открытый файл с передачей аргументов связанному приложению - PullRequest
1 голос
/ 16 февраля 2011


Я пытаюсь запустить приложение по умолчанию, зарегистрированное для расширения с указанием дополнительного аргумента:

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

Приложение начинает правильно открывать указанный файл.Проблема в том, что он получает только один параметр (имя файла), полностью игнорируя дополнительные «Аргументы».
Можно ли делать то, что я хочу?Я делаю что-то неправильно?

Заранее спасибо за любую помощь,
Паоло

Ответы [ 3 ]

1 голос
/ 16 февраля 2011

Я полагаю, что это ожидается.За кулисами Windows находит приложение по умолчанию в реестре, создает новый процесс и передает ему имя вашего файла.Я получаю то же поведение, если иду в командную строку и набираю "filename.ext аргумент" , чтобы мои аргументы не передавались в приложение.найдите приложение по умолчанию самостоятельно, заглянув в реестр.Затем вы можете запустить этот процесс с аргументами, вместо того, чтобы пытаться начать с ассоциации типов файлов.Здесь есть ответ о том, как найти приложение по умолчанию в реестре:

Поиск приложения по умолчанию для открытия файла определенного типа в Windows

0 голосов
/ 09 октября 2012

Я думаю, что проще использовать команду cmd

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

EDIT:

Я не знаю, работает ли он с аргументами, но это то, что я искал для запуска связанной программы ...

0 голосов
/ 16 февраля 2011

что именно является вашим "аргументом", имеет ли он пробелы, обратную косую черту и т. Д.?

    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();

Есть ли причина, по которой вы не можете запустить приложение, а затем использовать расширение и аргументы в своих аргументах?

...