Problemas con Process

28/05/2006 - 22:19 por Carlos | Informe spam
He copiado este ejemplo de la pagina del Guille:

Dim cmd As System.Diagnostics.Process = New System.Diagnostics.Process
cmd.EnableRaisingEvents = True
cmd.Exited += New EventHandler(cmd_Exited)
cmd.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden
cmd.StartInfo.CreateNoWindow = True
cmd.StartInfo.RedirectStandardOutput = True
cmd.StartInfo.RedirectStandardInput = False
cmd.StartInfo.UseShellExecute = False
cmd.StartInfo.FileName = comando
cmd.StartInfo.Arguments = argumento

cmd.Start()
Me.lbInfo.Items.Add("Ejecutado " + comando)
Dim r As String = cmd.StandardOutput.ReadToEnd
cmd.WaitForExit(1000 * 5)

y no consigo hacerlo funcionar en VB, ¿alguien me puede explicar lo que hace
el siguiente comando?:

cmd.Exited += New EventHandler(cmd_Exited)

¿y para hacer esto mismo en VB?

gracias.

carlos

Preguntas similare

Leer las respuestas

#1 Alberto Poblacion
29/05/2006 - 07:53 | Informe spam
"Carlos" wrote in message
news:%
[...] ¿alguien me puede explicar lo que hace el siguiente comando?:

cmd.Exited += New EventHandler(cmd_Exited)



Lo que hace es conectar la subrutina cmd_Exited con el evento Exited
del objeto cmd.

¿y para hacer esto mismo en VB?



Hay un par de formas de conseguirlo.

Una es usar la sentencia AddHandler:
AddHandler cmd.Exited, AddressOf cmd_Exited

La otra forma es omitir por completo esa sentencia, declarar cmd con
WithEvents y poner Handles en la definición de la rutina:

Dim WithEvents cmd As System.Diagnostics.Process


Sub cmd_Exited(sender as Objects, e as EventArgs) Handles cmd.Exited

End Sub


En ambos casos lo que se consigue es que se ejecute automáticamente la
subrutina cmd_Exited cuando termina de ejecutarse el proceso que has
arrancado con Process.Start.
Respuesta Responder a este mensaje
#2 Carlos
29/05/2006 - 19:28 | Informe spam
He hecho en VB:

Dim miProceso As New Process

' Ejecutar el comando y redireccionar la salida

' a un fichero .

miProceso.EnableRaisingEvents = True

miProceso.StartInfo.WorkingDirectory = "C:\Archivos de Programa\MySQL\MySQL
server 5.0\bin\"

miProceso.StartInfo.FileName = "mysqldump.exe"

miProceso.StartInfo.Arguments = " --opt da -u Usuario1 "

miProceso.Start()

miProceso.WaitForExit(10000)



Y me ejecuta el comando dando el resultado en una ventana de MS-DOS.

Pero si intento redireccionar la salida a una variable string como en el
ejemplo que os mostre:



Dim miProceso As New Process

' Ejecutar el comando y redireccionar la salida

' a un fichero .

miProceso.EnableRaisingEvents = True



miProceso.StartInfo.RedirectStandardOutput = True

miProceso.StartInfo.UseShellExecute = False



miProceso.StartInfo.WorkingDirectory = "C:\Archivos de Programa\MySQL\MySQL
server 5.0\bin\"

miProceso.StartInfo.FileName = "mysqldump.exe"

miProceso.StartInfo.Arguments = " --opt da -u Usuario1 -p""Mandarina100"" "

miProceso.Start()



Dim myString As String = miProceso.StandardOutput.ReadToEnd

miProceso.WaitForExit(10000)

MsgBox(myString)



Me da el error:

"El sistema no puede hallar el archivo especificado"

No entiendo nada ¿alguien sabe lo que pasa?
Respuesta Responder a este mensaje
#3 Carlos
30/05/2006 - 08:32 | Informe spam
He encontrado el fallo, parece ser que al hacer

miProceso.StartInfo.UseShellExecute = False

el comando miProceso.StartInfo.WorkingDirectory ya no funciona y hay que
decirle en el miProceso.StartInfo.FileName el path donde se encuentra el
fichero.




"Carlos" escribió en el mensaje
news:
He hecho en VB:

Dim miProceso As New Process

' Ejecutar el comando y redireccionar la salida

' a un fichero .

miProceso.EnableRaisingEvents = True

miProceso.StartInfo.WorkingDirectory = "C:\Archivos de
Programa\MySQL\MySQL server 5.0\bin\"

miProceso.StartInfo.FileName = "mysqldump.exe"

miProceso.StartInfo.Arguments = " --opt da -u Usuario1 "

miProceso.Start()

miProceso.WaitForExit(10000)



Y me ejecuta el comando dando el resultado en una ventana de MS-DOS.

Pero si intento redireccionar la salida a una variable string como en el
ejemplo que os mostre:



Dim miProceso As New Process

' Ejecutar el comando y redireccionar la salida

' a un fichero .

miProceso.EnableRaisingEvents = True



miProceso.StartInfo.RedirectStandardOutput = True

miProceso.StartInfo.UseShellExecute = False



miProceso.StartInfo.WorkingDirectory = "C:\Archivos de
Programa\MySQL\MySQL server 5.0\bin\"

miProceso.StartInfo.FileName = "mysqldump.exe"

miProceso.StartInfo.Arguments = " --opt da -u Usuario1 -p""Mandarina100""
"

miProceso.Start()



Dim myString As String = miProceso.StandardOutput.ReadToEnd

miProceso.WaitForExit(10000)

MsgBox(myString)



Me da el error:

"El sistema no puede hallar el archivo especificado"

No entiendo nada ¿alguien sabe lo que pasa?








email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida