Vb.net 在程序的新实例中打开文件

Vb.net 在程序的新实例中打开文件,vb.net,cad,solidworks,Vb.net,Cad,Solidworks,全部 我写了一段代码,当我扫描条形码时,它会打开一个设计蓝图。它工作得很好,但我想打开一个新的设计软件实例(Solidworks),并在新实例中显示打印。现在,无论我打开了多少Solidworks实例,打印只会在第一个实例中打开 下面注释掉的那行是有效的,只是不在正确的实例中。下面这一行是我希望使用的,但它返回一个“未找到文件”,即使solidworks的路径和打印路径都是正确的 如果能解释一下为什么这样做不起作用,我将不胜感激,因为我显然对这一点非常陌生……而且不知道我在做什么 Private

全部

我写了一段代码,当我扫描条形码时,它会打开一个设计蓝图。它工作得很好,但我想打开一个新的设计软件实例(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

很抱歉这种幼稚的方法,但过程中不应该有逗号。从两个参数之间开始

Start(String, String) 

通过指定应用程序的名称和一组命令行参数启动流程资源,并将资源与新流程组件关联

为什么不使用返回应用程序路径及其全名的
应用程序.ExecutablePath
。那么你的代码应该是

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

还要确保第二个字符串参数是有效路径

没必要道歉!我已经试过逗号,但似乎也不起作用:System.Diagnostics.Process.Start(“C:\Program files\Solidworks Corp\Solidwork\SLDWORKS.exe”、“G:\Fixtures\”&barcode&“\Details\”&barcode&“DET”&filename&ext)字符串中需要逗号和引号作为空格字符:否则它会试图打开不存在的“C:\Program”。