User 13790648 Ответов: 1

Как открыть файл с помощью process.start?


У меня есть некоторый код, который может открыть файл с помощью блокнота или Wordpad. Я пытаюсь открыть тот же файл с помощью текстового редактора по выбору пользователя. Я попробовал Microsoft Word в качестве теста, но не смог заставить его работать. Вот мой код (oh: переменная "OtherPuzzleEditorPath" определяется как Public в модуле):
Private Sub viewBtn_Click(sender As Object, e As EventArgs) Handles viewBtn.Click
        Dim MySelectedPath As String = Nothing
        Dim MySelectedExt As String = Nothing
        Dim EditorPath As String = Nothing
        
        Select Case True

            Case RadioButton1.Checked
                MySelectedPath = PuzzlePath
                MySelectedExt = ".wsp"

            Case RadioButton2.Checked
                MySelectedPath = SolutionsPath
                MySelectedExt = ".wss"

        End Select

        EditorPath = MySelectedPath & ListBox3.SelectedItem.ToString & MySelectedExt

        Select Case True

            Case OpenWithNotepad
                Process.Start("Notepad.exe", EditorPath)

            Case OpenWithWordpad
                Process.Start("Wordpad.exe", Chr(34) & EditorPath & Chr(34)) 'DONT CHANGE THIS LINE!

            Case OpenWithOther
                Process.Start(OtherPuzzleEditorPath & Space(1) & EditorPath)

        End Select

        ListBox3.ClearSelected()
        deleteBtn.Enabled = False
        viewBtn.Enabled = False

    End Sub<pre lang="vb">


Что я уже пробовал:

Различные варианты определения обеих строк: ie(Chr(34) & [path] & Chr(34)), изменение каталога, в котором находится исполняемый файл, а затем запуск его с помощью пути к файлу.

1 Ответов

Рейтинг:
5

Dave Kreskowiak

Вы изменили способ передачи параметров, когда добавили свой "OtherPuzzleEditor". Вы не предоставляете пробел, а затем параметр.

Предполагается, что вы передадите исполняемый файл для запуска и его параметры в качестве отдельных аргументов вызову Start. Измените код с этого момента:

Process.Start(OtherPuzzleEditorPath & Space(1) & EditorPath)

До настоящего времени:
Process.Start(OtherPuzzleEditorPath, EditorPath)


[no name]

Большое спасибо! Мне пришлось добавить кавычки вокруг второго параметра из-за пробелов в строке. Отлично работает! Еще раз спасибо!