Откройте файл в новом экземпляре программы - PullRequest
0 голосов
/ 26 ноября 2018

Все;

У меня есть немного кода, который я написал, который открывает проектный план при сканировании штрих-кода.Это работает достаточно хорошо, но я хотел бы открыть новый экземпляр программного обеспечения для проектирования (Solidworks) и иметь отображение печати в новом экземпляре.Прямо сейчас, независимо от того, сколько экземпляров Solidworks у меня открыто, печать будет открываться только при первом запущенном экземпляре.

Строка, закомментированная ниже, - это строка, которая работает, но не в нужном экземпляре.Строка ниже - это то, что я ожидал бы сработать, но он возвращает «файл не найден», хотя путь к SolidWorks и путь печати оба указаны правильно.

Любое объяснение, почему это не так 'работа будет очень цениться, поскольку я, очевидно, очень новичок в этом ... и понятия не имею, что я делаю.

Private Sub Button1_Click_1(sender As Object, e As EventArgs) Handles Button1.Click
    Try
        Dim barcode As String = tb_barcode.Text
        Dim filename As String = tb_barcode.Text
        'Add File Extension to end of path
        Dim ext As String = ".SLDDRW"
        'Split job number from detail number in barcode textbox
        barcode = Split(tb_barcode.Text, ".")(0)
        filename = Split(tb_barcode.Text, ".")(1)
        '- This works, just in primary instance
        'System.Diagnostics.Process.Start("G:\Fixtures\" & barcode & "\Details\" & barcode & " DET " & filename & ext)
        '- This does not work
        System.Diagnostics.Process.Start("'C:\Program files\Solidworks Corp\Solidwork\SLDWORKS.exe' 'G:\Fixtures\" & barcode & "\Details\" & barcode & " DET " & filename & ext + "'")

    Catch
        MessageBox.Show("File Not Found")
    End Try
End Sub

Ответы [ 2 ]

0 голосов
/ 27 ноября 2018

Почему бы вам не использовать Application.ExecutablePath. Это возвращает путь к приложению с его полным именем.Тогда ваш код должен быть

   System.Diagnostics.Process.Start(Application.Executablepath, "G:\Fixtures\" & barcode & "\Details\" & barcode & " DET " & filename & ext + "'")

Также убедитесь, что второй строковый аргумент является допустимым путем.

0 голосов
/ 26 ноября 2018

Извините за наивный подход, но не должно ли быть запятой в Process.Start между 2 аргументами?

Start(String, String) 

Запускает ресурс процесса, указывая имя приложения и набор аргументов командной строки, и связывает ресурс с новым компонентом процесса. документы

...