Запуск скрипта по выбранному пути - PullRequest
1 голос
/ 22 августа 2011

У меня сейчас есть этот кусок кода:

   Sub Button1Click(sender As Object, e As EventArgs)



            If dlgFolder.ShowDialog = Windows.Forms.DialogResult.OK Then

                txtPath.Text = dlgFolder.SelectedPath


                Try

                    Dim CopyFile As String = Path.Combine(Directory.GetCurrentDirectory, "pdftk.exe")
                    Dim CopyLocation As String = Path.Combine(dlgFolder.SelectedPath, "pdftk.exe")
                    Dim pyScript As String = Path.Combine(Directory.GetCurrentDirectory, "pdfmerge.py")
                    Dim pyLocation As String = Path.Combine(dlgFolder.SelectedPath, "pdfmerge.py")

                    System.IO.File.Copy(CopyFile, CopyLocation, True)
                    System.IO.File.Copy(pyScript, pyLocation, True)

                Catch copyError As IOException
                Console.WriteLine(copyError.Message)
                End Try         
            End If
End Sub

Это копирует два файла в текущем рабочем каталоге (который будет установочной папкой по умолчанию) в выбранный путь из Fodler Dialog Browser. Это работает правильно.

Теперь я хочу запустить "pdfmerge.py" в выбранный путь к папке. Я попробовал приведенный ниже код, но скрипт все еще работает в текущем рабочем каталоге.

Sub BtnNowClick(sender As Object, e As EventArgs)

        Dim myProcess As Process
        Dim processFile As String = Path.Combine(dlgFolder.SelectedPath, "pdfmerge.py")

        myProcess.Start(processFile, dlgFolder.SelectedPath)



    End Sub

Ответы [ 2 ]

1 голос
/ 23 августа 2011

Вы можете установить рабочий каталог процесса.

Dim p As New ProcessStartInfo
p.FileName = Path.Combine(dlgFolder.SelectedPath, "pdfmerge.py")
p.WorkingDirectory = dlgFolder.SelectedPath
Process.Start(p)

Один вопрос: вы гарантируете, что dlgFolder.SelectedPath правильный?Не зная внутренней работы вашей программы, кажется возможным нажать BtnNow до Button1, что означает, что dlgFolder.SelectedPath не будет установлено пользователем.

0 голосов
/ 22 августа 2011

Попробуйте использовать перегрузку Process.Start () , которая принимает 5 аргументов.

Start ( _
fileName As String, _
arguments As String, _
userName As String, _
password As SecureString, _
domain As String _
)

Возможно, вы сможете ввести null для userName и password, но если ваш каталог находится за пределами стандартных каталогов, на которые у вас есть разрешение, вам может потребоваться ввести имя пользователя и пароль. * Думаю, 1009 * будет рабочим каталогом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...