Manejar aplicación de Power Builder

¿Cómo están?, tengo una consulta, tengo dos sistemas hechos en power builder, la consulta seria si podría manejar un sistema desde el otro sistema, para ser mas especifico quiero que de un sistema cuando de clic en un botón, se abra el otro sistema con una ventana abierta y con datos cargados, como si hubiera hecho una consulta en esa ventana, alguna sugerencia por favor, seria de mucha utilidad.

1 respuesta

Respuesta

En power tenes la siguiente función que te permite ejecutar otros sistemas, sean o no de power:

ls_dir = 'C:\'
ls_aplicacion = 'xxxx.exe'

ls_args = '8'

ShellExecute(Handle(this), 'open', ls_aplicacion, ls_args, ls_dir, 5);

Busca en la ayuda para ver si es lo que necesitas!

Hola, efectivamente tambien realice esa accion, abrir una aplicación desde power builder, en todo caso mi pregunta mas a detalle sería, si yo podría por  ejemplo desde mi aplicacion 1, llamar a un evento de una ventana de la aplicacion 2. Lo que intento hacer ese que cuando se consulte información desde la aplicación 1, se abra la aplicacion 2, con una ventana abierta, y con datos cargados enviados desde la aplicacion 1, asi si se vuelve a hacer otra consulta desde la aplicación 1, si la aplicacion 2 ya esta abierta solo deberá abrir la ventana con los datos que se consultaron desde la aplicación 1...... (creo que mas viene por el tema de comunicacion entre las dos aplicaciones desarrolladas en power builder). ¿Hay alguna forma de hacer esto??. Gracias.

Desconozco como son las dos aplicaciones, así que puntualmente no te puedo decir que hacer, mas bien te puedo guiar.

La aplicación 1 llama a la aplicación 2, y en uno de los parametros (ls_args) podes enviarle la información que quieras.

Si es mas de un dato, lo puedes separar por medio del símbolo '#' (por ejemplo: 'w_consulta#8'). Lo que tienes que tener en la aplicación 2 es una función para separar los parámetros e identificar que es cada uno.

En la aplicación 2, al realizar el open, puedes colocar en la variable ls_args el nombre de la ventana que contiene la consulta. (w_consulta)

Luego por medio del OpenSheetWithParm, abres la consulta y le pasas otro parámetro que enviaste en el ls_args (8) y haces el retrieve de la DW.

Hola, de antemano, gracias por la respuesta, bueno si bien es cierto, que se puede enviarle parametros a la aplicacion 2,  tomar estos para abrir una ventana especifica y consultar la información, con esto se solucionaria la parte de consultar a la otra aplicacion, el probelma seria que si esta aplicacion 2 ya esta ejecutandose y han cerrado la ventana de consulta,si vuelvo a consultar desde la aplicacion 1, deberia abrirme la misma ventana con los datos cargados en la aplicacion 2 que ya esta ejecutandose. SI ejecuto la aplicacion 2 enviandole parametros cada vez que consulto desde la aplicacion 1, se me abren varias instancias de la aplicacion 2, lo que no deberia ser, sino que deberia haber solo una instancia de la aplicación 2. El problema que se centra mas por este inconveniente.

Entiendo lo que quieres hacer, el tema es que estas metiéndote en algo que va mas allá de la programación de power builder, ya que quieres controlar los procesos que se están ejecutando en la aplicación 2, nos vamos a nivel de sistema operativo.

Hace unos años atrás, hicimos un sistema de seguimiento y de control de accesos, en donde se guardaba todo lo que ejecutaba un usuario desde que ingresaba a la aplicación, que ventanas ejecutaba, las consultas que hacia, a que hora entraba y salia de cada una de ellas, las consultas que realizaba, con que parámetros, etc.

Nosotros esto lo usábamos a nivel de supervisión, matábamos el proceso de la aplicación si el usuario entraba a hacer cosas que no debía para luego sansionarlo.

En tu caso, tendrías que ir guardando en una tabla todos estos movimientos para saber si se esta ejecutando dicha consulta. El problema es que no se de que forma podrías no tener varias instancia de la aplicación 2, es como que deberías matar el proceso de la aplicación 2 y volverlo a ejecutar con la consulta, no se si esto es lo que quieres hacer.

Hola, en todo caso como podría matar el proceso de la aplicación. Otra solución que podría implementar era mediante un servidor de aplicaciones(EaServer), donde en la aplicación 2 tendría objetos no visuales con alguna función que haría la consulta a la ventana, luego este NVO lo podría generar como componente para llamar a sus funciones desde la aplicación 1, no se que tan factible seria esa solución, porque me parece que el servidor de aplicaciones es usado mas parar almacenar la lógica del negocio, no tengo conocimientos tan sólidos sobre ese tema.

Saludos.

Disculpame pero desconozco como funciona el EaServer.

Para matar un proceso, debes buscar información de la lista de los procesos con tasklist y lo matas con taskkill /pid numero, donde numero es el id de proceso.

Puedes armar un archivo .BAT que haga esto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas