none
Проблема с открытием файлов с помощью внеших программ RRS feed

  • Вопрос

  • По логике работы моей программы надо давать возможность пользователю просматривать внешние файлы.

     я делаю это примерно следующим образом

    Process proc = new Process();
    proc.StartInfo.Argumen="FullNameОткрываемогоФайла";
    proc.StartInfo.FileName = "внешняяПрограмма";
    proc.Start();

    При использовании некоторых программ, например Word и Excel,  возникают проблемы, если FullName содержит пробелы. Можно, конечно, на лету делать временную копию файла с правильным FullName, но это очень неизяшно, подскажите пожалуйста, как поступать правильно


    • Изменено Miklv 24 ноября 2012 г. 4:48
    24 ноября 2012 г. 4:36

Ответы

  • Если нужно открывать файлы программной, которая должна это делать по умолчанию, то вот такой вариант отлично работает:

    Process proc = new Process();
    proc.StartInfo.FileName = @"c:\temp\document name.docx"; ;
    proc.Start();

    Запускается Word  и открывает файл с пробелом в названии.

    Или если нужно указать, какой программой открывать, то аргумент с пробелами нужно указывать в кавычках:

    Process proc = new Process();
    proc.StartInfo.Arguments = String.Format("\"{0}\"",@"c:\temp\document name.docx");
    proc.StartInfo.FileName = "Winword.exe";
    proc.Start();

    • Предложено в качестве ответа LXGDARKEditor 24 ноября 2012 г. 8:13
    • Помечено в качестве ответа Miklv 24 ноября 2012 г. 11:09
    24 ноября 2012 г. 6:39
    Модератор

Все ответы

  • Если нужно открывать файлы программной, которая должна это делать по умолчанию, то вот такой вариант отлично работает:

    Process proc = new Process();
    proc.StartInfo.FileName = @"c:\temp\document name.docx"; ;
    proc.Start();

    Запускается Word  и открывает файл с пробелом в названии.

    Или если нужно указать, какой программой открывать, то аргумент с пробелами нужно указывать в кавычках:

    Process proc = new Process();
    proc.StartInfo.Arguments = String.Format("\"{0}\"",@"c:\temp\document name.docx");
    proc.StartInfo.FileName = "Winword.exe";
    proc.Start();

    • Предложено в качестве ответа LXGDARKEditor 24 ноября 2012 г. 8:13
    • Помечено в качестве ответа Miklv 24 ноября 2012 г. 11:09
    24 ноября 2012 г. 6:39
    Модератор
  • Большое спасибо. Это то что нужно и так просто!
    24 ноября 2012 г. 11:09