Можно ли передать аргументы командной строки в исполняемый файл через связанный файл?

2

У меня есть программа, которая передает аргументы командной строки связанному файлу (т.е. связанному расширению файла) исполняемого файла. Исполняемый файл никогда не получает аргументы. Однако, если я запускаю исполняемый файл напрямую и передаю ему путь к связанному файлу и аргументам, он получает как путь к файлу, так и аргументы.

  • Операционная система: Windows XP
  • Язык программирования: С#

Я запускаю связанный файл, используя:

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

Заранее благодарим за помощь.

-Edit

В принципе, у меня есть интерпретатор языка программирования, который должен получать аргументы командной строки, переданные ему программой С#.

Если я запустил файл кода с помощью программы С#, интерпретатор запустится, но не получит аргументы командной строки, которые были переданы в файл кода программой С#.

Таким образом, существует три файла:

  • интерпретатор
  • файл кода
  • программа, пытающаяся запустить файл кода, как если бы это была программа

Кроме того, запуск интерпретатора напрямую не является опцией, потому что он не расположен в том же пути к файлу на каждом компьютере.

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

  • 0
    Пожалуйста, не могли бы вы опубликовать немного источника, потому что я не совсем "понимаю", что вы ищете.
  • 0
    Мне кажется, он делает Process.Start ("file.xls", "arg1 arg2");
Показать ещё 2 комментария
Теги:
command-line

1 ответ

1
Лучший ответ

Вы можете попробовать (untested) изменить ассоциацию файлов (на расширенной панели), чтобы включить аргументы% 2% 3 и т.д. (обычно это просто включает в себя% 1) - однако это связано с изменениями на клиенте и (что более важно) вся идея передачи аргументов в документ предполагает, что у вас есть один и тот же зритель (т.е. аргументы разумны).

IMO, лучший вариант - явно запустить exe, передав doc (и другие другие) в качестве аргументов.

Пример:

приемник exe (только показывает полученные аргументы команды):

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

Затем: создайте файл "foo.flibble", щелкните правой кнопкой мыши/открыть и связать с моим ресивером; попал в файловые ассоциации, "flibble", расширенный, "открытый", отредактировал и добавил% 2% 3% 4

Затем в отдельном exe:

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

Что показывает:

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

Итак, этот имеет, теперь передал дополнительные аргументы exe через документ. Но большая конфигурация клиента!

  • 0
    Спасибо, это прекрасно работает!

Ещё вопросы

Сообщество Overcoder
Наверх
Меню