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

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

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

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

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

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

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


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

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

11   голосов , оценка 4.364 из 5
Похожие ответы