Подтвердить что ты не робот

С# открытый файл с приложением и параметрами по умолчанию

Самый простой способ открыть файл с помощью приложения по умолчанию:

System.Diagnostics.Process.Start(@"c:\myPDF.pdf");

Однако я хотел бы знать, существует ли способ установить параметры для приложения по умолчанию, потому что я хотел бы открыть PDF файл с определенным номером страницы.

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

Благодарю.

4b9b3361

Ответ 1

РЕДАКТИРОВАТЬ (спасибо комментарию surfbutler в комментариях к вопросу) Если вы хотите, чтобы файл был открыт приложением по умолчанию, я имею в виду без указания Acrobat или Reader, вы не можете открыть файл на указанной странице.

С другой стороны, если у вас есть Ok с указанием Acrobat или Reader, продолжайте читать:


Вы можете сделать это, не указав полный путь Acrobat, например:

Process myProcess = new Process();    
myProcess.StartInfo.FileName = "acroRd32.exe"; //not the full application path
myProcess.StartInfo.Arguments = "/A \"page=2=OpenActions\" C:\\example.pdf";
myProcess.Start();

Если вы не хотите, чтобы PDF файл открывался с помощью Reader, но с Acrobat, выполните вторую строку следующим образом:

myProcess.StartInfo.FileName = "Acrobat.exe";

SECOND EDIT: поиск приложения по умолчанию для расширения PDF

Вы можете запросить реестр, чтобы определить приложение по умолчанию, чтобы открыть PDF файлы, а затем определить FileName в вашем процессе StartInfo соответственно. Again, thanks surfbutler for your comment :)

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

Ответ 2

Я преобразовал код VB в сообщение в блоге, связанное xsl с С#, и немного изменил его:

public static bool TryGetRegisteredApplication(
                     string extension, out string registeredApp)
{
    string extensionId = GetClassesRootKeyDefaultValue(extension);
    if (extensionId == null)
    {
        registeredApp = null;
        return false;
    }

    string openCommand = GetClassesRootKeyDefaultValue(
            Path.Combine(new[] {extensionId, "shell", "open", "command"}));

    if (openCommand == null)
    {
        registeredApp = null;
        return false;
    }

    registeredApp = openCommand
                     .Replace("%1", string.Empty)
                     .Replace("\"", string.Empty)
                     .Trim();
    return true;
}

private static string GetClassesRootKeyDefaultValue(string keyPath)
{
    using (var key = Registry.ClassesRoot.OpenSubKey(keyPath))
    {
        if (key == null)
        {
            return null;
        }

        var defaultValue = key.GetValue(null);
        if (defaultValue == null)
        {
            return null;
        }

        return defaultValue.ToString();
    }
}

РЕДАКТИРОВАТЬ - это ненадежно. См. Поиск приложения по умолчанию для открытия определенного типа файла в Windows.

Ответ 3

вы можете попробовать с помощью

Process process = new Process();
process.StartInfo.FileName = "yourProgram.exe";
process.StartInfo.Arguments = ..... //your parameters
process.Start();

Ответ 4

это должно быть близко!

public static void OpenWithDefaultProgram(string path)
{
    Process fileopener = new Process();
    fileopener.StartInfo.FileName = "explorer";
    fileopener.StartInfo.Arguments = "\"" + path + "\"";
    fileopener.Start();
}

Ответ 5

Пожалуйста, добавьте "Настройки" в "Свойства для проекта" и используйте их таким образом, чтобы у вас были чистые и простые настраиваемые параметры, которые можно настроить по умолчанию.

Как создать новую настройку во время разработки

Обновление: после комментариев ниже

  • Щелкните правой кнопкой мыши по проекту
  • Добавить новый элемент
  • В разделе "Элементы Visual С#" → "Общие"
  • Выберите файл настроек