2010-08-01 3 views
0

Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click 

Dim p As New ProcessStartInfo 
p.FileName = "D:\c\File_copy_program.exe" 
p.Arguments = "D:\c\File_copy_program.exe" & "D:\PE.nrg" & "D:\c\1.nrg" 
p.WindowStyle = ProcessWindowStyle.Hidden 
Process.Start(p) 

End Sub 

Comme vous pouvez le voir, je suis en train de courir dans le code ci-dessus un programme appelé File_copy_program.exe, que je créé en utilisant C++. Maintenant, ce programme prend 3 arguments dans Main (c'est-à-dire le nom du programme, le fichier source, le fichier cible).Comment passer plusieurs arguments de ligne de commande dans un programme appelé VB.net

Maintenant la ligne: p.Arguments = "D: \ c \ File_copy_program.exe" & "D: \ PE.nrg" & "D: \ c \ 1.nrg"

ne fonctionne pas . Et mon programme dit que le nombre d'arguments invalides est passé (puisque j'ai une condition dedans pour m'assurer que le programme s'interrompt si le nombre d'arguments n'est pas égal à 3).

+0

Vous avez peut-être des espaces manquants dans votre chaîne, entre les arguments. Pouvez-vous vérifier combien d'arguments il est en train de voir, en mettant un point d'arrêt et en vérifiant l'exception qu'il lance. – GenEric35

+1

'Arguements' ne devrait pas avoir le programme dedans. –

Répondre

2

Vous devez passer dans les arguments que vous les transmettre au programme sur la ligne de commande:

p.Arguments = "D:\PE.nrg D:\c\1.nrg" 

Ou, si vous utilisez des variables:

p.Arguments = arg1string & " " & arg2string 

Comme vous pouvez le voir sur la Dans le premier exemple, vous ne passez pas le nom du programme en argument, de la même façon que vous ne suivrez pas le nom du programme avec lui-même sur la ligne de commande.

+0

Et sans le programme.exe –

+0

@Henk Holterman - assez juste. Je pensais qu'avec le premier exemple c'était assez clair, mais peut-être pas pour tout le monde. Ajout d'informations supplémentaires pour répondre. – Oded

1

Essayez p.Arguments = "D:\PE.nrg" & " " & "D:\c\1.nrg" - il est douteux que vous deviez spécifier le nom de l'application car il sera transmis automatiquement par DOS, et vous avez besoin d'un espace entre vos paramètres.

Questions connexes