Dim LInstr
As Long
Dim RutaExe As String
Dim sExeName As String
' para este caso rutaExe = vbNullString
sExeName = RutaExe & "notepad.exe" & _
Chr$(32) & Chr$(34) & "D:\archivo_1.txt" & Chr$(32) & Chr$(34)
' Se ejecuta
LInstr = Shell(sExeName, vbNormalFocus)
Dim RutaExe As String
Dim sExeName As String
' para este caso rutaExe = vbNullString
sExeName = RutaExe & "notepad.exe" & _
Chr$(32) & Chr$(34) & "D:\archivo_1.txt" & Chr$(32) & Chr$(34)
' Se ejecuta
LInstr = Shell(sExeName, vbNormalFocus)
Esto abrirá el archivo "archivo_1.txt" (en caso de existir) en el block de notas.
El número 32 equivale al código Ascii del espacio en blanco, 34 es el código Ascii de las comillas.
Lo bueno del C# es que todas las aplicaciones escritas en este lenguaje arrancan desde un método Main con la siguiente forma:
static void Main(string[] args)
El array "args" del tipo string recibe todos los parámetros que le pasamos al ejecutable. Si es una aplicación de consola llamada "miExe" se escribiría:
Donde "1", "2" y "3" son strings y corresponden a las variables args[0], args[1] y args[2] en la aplicación en C# respectivamente. Si se desea operar con ellas, se deberá convertir de string al tipo numérico deseado, pues "Main" siempre recibe los parámetros como string. Los elementos del array args se emplean como cualquier variable de .Net tipo string.
Si queremos llamar a miExe y pasarle parámetros desde una aplicación en VB6, el código fuente será:
Dim LInstr as Long
Dim RutaExe as String
Dim sExeName as String
Dim arg1 as String, arg2 as String, arg3 as String
... coding... coding... coding.....
' rutaExe contiene la ruta a la carpeta donde está miExe.exe
' rutaExe contiene la ruta a la carpeta donde está miExe.exe
Chr$(32) & Chr$(34) & arg0 & Chr$(32) & Chr$(34) & _
Chr$(32) & Chr$(34) & arg1 & Chr$(32) & Chr$(34) & _
Chr$(32) & Chr$(34) & arg2 & Chr$(34)
' Se ejecuta miExe
LInstr = Shell(sExeName, vbMinimizedNoFocus) ' el segundo parámetro es opcional
La aplicación en C# separará los argumentos de la forma correcta, y los asignará a los elementos del array args, sólo si se los pasamos con espacios y comillas en el orden correcto. La aplicación en C# usa los espacios y las comillas para saber qué partes del string sExeName son el nombre del ejecutable y cada uno de los argumentos que está recibiendo.