none
Como ejecutar comandos en le simbolo del sistema (cmd) desde una aplicación de windows forms en Visual Studio 2010 (leguaje Visual Basic)?

    Question

  • Hola,

    estoy consciente que de este tema se encuentran muchas preguntas por internet pero ninguna me ha servido para resolver la duda que tengo, espero poder explicarme para ver si me hago entender.

    El escenario es que se trata de un equipo que para poder configurarlo o revisar su funcionamiento, éste recibe comandos a través del símbolo del sistema (cmd). Estoy haciendo una aplicación de Windows forms (visual basic) para facilitar esta tarea, la aplicación lo que hace, o debería hacer dicho de otra forma, es que abriera la ventana “cmd” y escribiera cada comando específico del equipo y lo ejecutara sin que se cierre la ventana del cmd o me abra otra ventana, sólo que trabaje sobre la misma ventana y ésta se cierre al final cuando se haya terminado el proceso.

    He logrado abrir la ventana del cmd y también he logrado que ejecute un comando (todo esto lo hace simultáneamente con la instrucción “Shell”) pero cuando quiero ejecutar un segundo comando lo hace pero abriendo otra ventana y así no me sirve porque es con esa primera ventana donde el equipo se encuentra sincronizado; y como dije al principio no he conseguido por internet la solución para este caso.

    Agradeciendo de ante mano la información que puedan aportar, quedo de ustedes muy atentamente.

    Reciban un saludo cordial, gracias.
    Wednesday, September 18, 2013 11:44 AM

Answers

  • Hola a todos, en vista de que nadie más dió aportó alguna solución para lo que se quería en este tema, me puse ha realizar varias pruebas y, creo, que encontré una solución. Aquí se las dejo para el que esté interesado en algo parecido.

    'Para activar la ventana de comandos utilicé:
    Process.Start("cmd.exe", "/k c: & cd\")
    'Para enviar los comandos preprogramados utilicé las siguientes líneas:
    AppActivate("Nombre de la ventana del cmd, tal cual como aparece")
    My.Computer.Keyboard.SendKeys("comando a enviar", True)
    My.Computer.Keyboard.SendKeys(Chr(13), True)
                

    De momento ha funcionado, gracias a todos.

    Saludos

    • Marked as answer by Reymema Wednesday, September 25, 2013 7:38 PM
    Wednesday, September 25, 2013 7:37 PM

All replies

  • ¿No podrías ejecutar un .bat con los comandos que quieras?

    Saludos, Javier J

    Wednesday, September 18, 2013 4:01 PM
  • Hola Javier,

    Ya he visto soluciones con esto pero no me sirve con .bat ya que los comando se ejecutan secuencialmente, en el equipo por cada comando que se ejecute se espera una respuesta por parte de este.

    Para que se hagan una idea, el equipo se conecta al PC por la conexión de Red (previamente configurando la IP del equipo), luego se abre el cmd y se realiza un Telnet , a continuación te solicita el usuario y la contraseña, y una vez establecida la comunicación se comenza con la ejecución de los comandos específicos según la tarea a realizar. Hay algunas tareas que se repiten en cada equipo al que te conectas, que son las que quiero automatizar si se puede decir así, yo tengo hecha la aplicación y me funciona, pero en ella lo que hago es que se copie el comando al portapapeles y solo tengo que hacer click con el botón derecho del mouse en la ventana del cmd para copiarlo, lo que pasa es que me he empeñado de ir un poco más allá y pensé que en vez de hacerlo así por qué no lo hago directamente transfiriendo el comando hacia la ventana del cmd, tengo el presentimiento que sí se puede hacer, he conseguido por internet algunas respuesta hasta enviar un primer comando, en mi caso el Telnet, pero no logro conseguir ni tengo idea si quiero envia los siguientes comandos (usuario, contraseña y el resto de comandos, y como te dije antes con cada comando que se genere se espera una respuesta del equipo.

    Gracias por contestar, saludos

    Thursday, September 19, 2013 11:14 AM
  • Hola a todos, en vista de que nadie más dió aportó alguna solución para lo que se quería en este tema, me puse ha realizar varias pruebas y, creo, que encontré una solución. Aquí se las dejo para el que esté interesado en algo parecido.

    'Para activar la ventana de comandos utilicé:
    Process.Start("cmd.exe", "/k c: & cd\")
    'Para enviar los comandos preprogramados utilicé las siguientes líneas:
    AppActivate("Nombre de la ventana del cmd, tal cual como aparece")
    My.Computer.Keyboard.SendKeys("comando a enviar", True)
    My.Computer.Keyboard.SendKeys(Chr(13), True)
                

    De momento ha funcionado, gracias a todos.

    Saludos

    • Marked as answer by Reymema Wednesday, September 25, 2013 7:38 PM
    Wednesday, September 25, 2013 7:37 PM