Запуск стороннего приложения и передача ему параметров - C#

Узнай цену своей работы

Формулировка задачи:

Всем привет! Из своего приложения запускаю стороннюю консольную программу и хочу передать ей строку с параметрами. Перед этим, пользователь через окно обзора выбирает несколько файлов и добавляет их в список, происходит это так:
Листинг программы
  1. private void BtnAddAudio_Click(object sender, EventArgs e)
  2. {
  3. OfdAudio.Title = "Открытие файла";
  4. OfdAudio.InitialDirectory = "::{20D04FE0-3AEA-1069-A2D8-08002B30309D}";
  5. OfdAudio.Multiselect = true;
  6. OfdAudio.Filter = "wav файлы (*.wav)|*.wav|mp3 файлы (*.mp3)|*.mp3|mp4 файлы (*.mp4)|*.mp4|ogg файлы (*.ogg)|*.ogg|m4a файлы (*.m4a)|*.m4a|flac файлы (*.flac)|*.flac|Все файлы (*.wav;*.mp3;*.mp4;*.ogg;*.m4a;*.flac)|*.wav;*.mp3;*.mp4;*.ogg;*.m4a;*.flac";
  7. OfdAudio.FilterIndex = 1;
  8. OfdAudio.RestoreDirectory = true;
  9. if(OfdAudio.ShowDialog() == DialogResult.OK)
  10. {
  11. foreach(string file in OfdAudio.FileNames)
  12. {
  13. ListAudio.Items.Add(Path.GetFileName(file));
  14. CreateArrayAudioFiles(file);
  15. }
  16. }
  17. }
Далее формируется массив из строк, содержащих пути к файлам:
Листинг программы
  1. private void CreateArrayAudioFiles(string path)
  2. {
  3. SelectedFiles = new string[ListAudio.Items.Count];
  4. for(int i = 0; i < SelectedFiles.Length; i++)
  5. {
  6. SelectedFiles[i] = path;
  7. }
  8. }
и по нажатию на кнопку осуществляется перебор массива со строками и вызов для каждого файла отдельного процесса:
Листинг программы
  1. ConvertationAudioProcess.StartInfo.FileName = "ffmpeg.exe";
  2. for(int i = 0; i < SelectedFiles.Length; i++)
  3. {
  4. ConvertationAudioProcess.StartInfo.Arguments = "-i \"\" + SelectedFiles[i] + \"\" result\\audio\\1.wav";
  5. ConvertationAudioProcess.Start();
  6. ConvertationAudioProcess.WaitForExit();
  7. ConvertationAudioProcess.Close();
  8. }
Всё бы ничего, но пути к файлам содержат пробелы. Вопрос заключается в следующем: Подскажите пожалуйста, как мне взять в кавычки путь к файлу, содержащийся в SelectedFiles[i]? чтобы строка параметров выглядела примерно так: -i "c:\Музыка\Новая папка" ... Ведь если взять путь в кавычки, проблемы с пробелами не будет. Я знаю, что нужно использовать конструкции типа ", но как правильно разместить эти конструкции и элемент массива с путём к файлу так, чтобы путь был в кавычках? И сразу же хотел спросить, может кто знает, как указать имя выходного файла такое же, как и у входного? То есть результирующий файл должен быть с таким же именем, как и входной, только другой формат у него будет. Заранее большое спасибо!

Решение задачи: «Запуск стороннего приложения и передача ему параметров»

textual
Листинг программы
  1. private void CreateArrayAudioFiles(string path)
  2. {
  3.     SelectedFiles = new string[ListAudio.Items.Count];
  4.     for(int i = 0; i < SelectedFiles.Length; i++)
  5.     {
  6.         SelectedFiles[i] = path; // Один и тот же путь
  7.     }
  8. }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.364 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы