![]() |
Problema corriendo un proceso
hola companneros
tengo el siguiente codigo para crear un nuevo proceso de consola, donde si se ejecuta algo como "DIR" o "netstat" , pues esta muy bien y siempre funciona. Ahora, necesito correr un comando que luego de correrlo se queda con un prompt esperando mas comandos de mi parte. Como esto lo hago desde dentro de mi programa, entro en un ciclo infinito. Lo que necesito es poder controlar el nuevo proceso creado, que no afecte mi propio programa y lo mas importante que pueda seguir mandandole comandos hasta que decida cerrarlo, mandandole el comando adecuado. muchas gracias de antemano
|
:rolleyes: ¿de donde sacaste ese código?
|
internet
Cita:
sabes, una solucion seria cerrar el handle del proceso, de esa forma tendria control de mi aplicacion de nuevo. pero luego no sabria como restablecer la comunicacion de nuevo con el proceso y continuar enviando comandos :-(. |
Cita:
http://www.clubdelphi.com/foros/show...9&postcount=18 Volviendo a tu problema. Si te entiendo bien, el programas que ejecutas se queda esperando una entrada por tu parte, y lo que tu quieres es poder mandarle comandos. No es difícil hacer lo que tu quieres, pero vas a tener que replantear todo el código, ten en cuenta que no puedes meter todo dentro de una función, vas a tener que repartir el código a lo largo de los eventos de tu aplicación. Quizá si explicas un poco que es lo que hace tu aplicación, podemos decidir cual es el mejor sitio para colocar el código. |
Cita:
basicamente necesito ejecutar el comando kd (kernel debugger) pero no desde la consola lo que seria obvio; sino desde mi programa en delphi. Cuando abro el "crash dump" que necesito analizar el kd me presenta el prompt para seguir mandandole los comandos como por ejemplo "!process 0 0" para ver los procesos que hay en "memory dump". Al hacer esto desde delphi, pierdo todo control sobre mi aplicacio hasta que el proceso que llame no termina y regresa. Pero resulta que este en cuestion no termina y no regresa nunca. que hacer? gracias. |
Vamos partir de la versión revisada del código que puedes encontrar en la sección de trucos (truco 54), y la vamos a modificar para enviar un "retorno de carro" para poder asi finalizar el comando "time".
El código anterior no tiene mucha utilidad pero ilustra perfectamente como comunicarte con el proceso hijo. |
Hola y perdón por la intromisión.
Yo hace tiempo que utilicé esa técnica con varios motores de ajedrez, a los que les mandaba diferentes comandos , esperaba su respuesta y teniendo un control absoluto sobre la entrada y salida...
Luego un par de funciones accesorias de control
Otra alternativa es esta:
Uno de los casos en los que también lo utilicé, fue para ejecutar y leer el comando NETSTAT. Pena que cuando me hacía falta, seoane todavía no había insertado su código su post, y a mí me hacía falta hace tiempo |
wow, muchas gracias
super, ahora mismo trato de ajustar mi codigo a lo que me han dado.
muchas gracias, suerte |
Ya nos contarás algo de como fue ;)
|
La franja horaria es GMT +2. Ahora son las 04:57:57. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi