Los foros del Guille

MKN Reservas (Maro - Kayak Nerja)


Kayak Maro - Rutas y alquiler de kayak y tabla

Si no encuentras respuesta, puedes buscar en el sitio del Guille

Google
 
Selecciona el foro y pulsa en mostrar:     Mostrar 
De tu inter�s (algunos de los avisos publicados)

01/feb./2019

Los moderadores, MVP y administradores podrán seguir editando, respondiendo o creando nuevos mensajes

Con idea de que puedan ayudar a responder e ir cerrando mensajes ;-)

  Foro: .NET VB Cantidad:  Desde:   Hasta:    Aplicar   Responder 
Respuestas a: 40924 - Interactuar con otra aplicacion.
IDAsuntoFechaNick 
40924 Interactuar con otra aplicacion.29/04/08 09:47angel_debat   
Hola. Mi nombre es Àngel y trabajo como informático Freelance.

Un cliente me ha pedido que le automatice un programa que el compró a una empresa.

El programa se llama Auto Signal, pero eso es lo de menos…

Lo que quiere es que, al apretar un botón de mi aplicación, este programa abra un archivo, coja los datos y proporcione una serie de gráficos.

Normalmente, esto se hace apretando botones de este programa en cuestión, pero mi cliente quiere que se haga automáticamente.

Me puesto en contacto con el proveedor pidiéndole algún ejemplo de aplicación en Vb.net que interactúe con su programa, o bien, algunos comandos que pudiese utilizar a través de la línea de comandos. Pero no he tenido respuesta…

Mi pregunta es: Puedo pasarle parámetros desde mi aplicación en Vb.net de alguna manera?

Por Internet, he encontrado consejos que no acabo de entender como llevar a cabo, ya que mis conocimientos en programación tampoco son muy altos:

Insertar una DLL en el espacio de direcciones de la otra aplicación.

Enviar al bucle de mensajes la secuencia adecuada de mensajes WIN32 para que la aplicación actúe como tú quieras.

Capturar el bucle global de mensajes del equipo mediante una la inserción de una DLL global.

Enviar una secuencia de WM_MOUSECLICK para que se abra la ficha correspondiente, luego WM_KEYCHAR con los TAB y los textos a rellenar.

Interactuar con el registro.

Interactuar con la ventana activa…

Agradeceré cualquier ayuda.

Muchas gracias.

Àngel Gimeno.
IDAsuntoFechaNick 
40929 Re: Interactuar con otra aplicacion. (Resp: 40924)29/04/08 11:41lmiguelonl   
hola,

en esta misma web tienes como abrir otras aplicaciones y pasarles algun parametro:

http://www.elguille.info/colabora/puntoNET/ar_abrir_aplicacion.htm

Pero claro...hacer que en esa aplicacion se pulse un boton....eso ya se me escapa.

Lo mismo se podria enviar una combinacion de teclas para hacer que el boton se pulse, por ejemplo si tu aplicacion se abre con el foco en el boton adecuado pues le pasas un "enter", si tienes que moverte por 2 botones pues le pasas 2 tabuladores y un enter... pero vamos esto es una idea muy " a bote pronto ", no estoy muy puesto aun en .NET.

Suerte


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
40930 Re: Interactuar con otra aplicacion. (Resp: 40929)29/04/08 12:02angel_debat   
Hola. Gracias por tu respuesta.

Si. Eso ya lo se hacer. Lo malo es, que parámetros o argumentos pasarle al programa...

Àngel


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
40961 Re: Interactuar con otra aplicacion. (Resp: 40924)29/04/08 23:37jomabova   
Hola Angel.
Si no eres experto en el uso del Win32 y no has programado directamente los WM_... etc deberias intentar una solución mas sencilla, luego te explico. Lo de inyectar código en los procesos o en las dlls, ...

Normalmente hay una forma muy sencilla de interactuar con un programa que se carga en modo gráfico, aunque no siempre da buenos resultados, eso depende de la aplicación y como esté programada. A lo que vamos.

Levantas ese programa y haces todo el proceso manual hasta generar el resultado que pretendes. La única salvedad es que debes hacerte una plantilla con todas las teclas que vas usando. Ejemplo: suponiendo que los menús se puedan accder con métodos abreviados de teclado:
Alt+A -> menú archivo Ctrl+O Abrir, etc., en el caso de que haya opciones que no tengan una tecla rápida, tendrás que contar los desplazamientos de tecla arriba o abajo + el enter de la opción.
Cuando tengas la plantilla diseñada, cierras el programa y te haces una aplicación de consola básica que haga lo siguiente:
Crear un proceso nuevo que lance la aplicación en cuestión.
obtener el handle de la ventana principal.
utilizar el método SendKeys y mandar las secuencias que guardaste.
las teclas las envias en bloques coherentes.
Lo puedes hacer en modo depuración y así vas viendo como funciona la ventana.

Con unas pocas pruebas podrás depurar los fallos y ponerlo en orden. Lo mas probable es que funcione correctamente o casi.

Ya nos dirás.
Saludos.


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
40966 Re: Interactuar con otra aplicacion. (Resp: 40961)30/04/08 07:24lmiguelonl   
Si que deberia funcionar...

Yo hice una aplicacion de consola que abre el firefox, va a una web y una vez alli enviando tabuladores y teclas de cursor y demas la pagina hacia automaticamente lo que se supone que tenia que hacer. Eso si tuve que poner unos delays entre teclas de un par de segundos para darle "vidilla" y que tuviera tiempo de hacer las cosas bien.


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
41015 Re: Interactuar con otra aplicacion. (Resp: 40924)02/05/08 09:10angel_debat   
Gracias jomabova.
Me faltaba ese pequeño empujón que me has dado y lo he solucionado…

Te pongo los pasos que he seguido por si otro forero se encuentra con el problema.

Según tu respuesta:
Debo manipular la aplicación con el teclado anotando las teclas que pulso.

Debo capturar el Handle de la aplicación. He ido a http://www.elguille.info/NET/vb6anet/capturarTextoVentanaActiva.htm
Y me he bajado este ejemplo que me captura el Handle, (que hasta ahora no sabía lo que era) Deduzco que es el número de turno que asigna Windows a esa ventana…

Aquí he aprendido como activar una ventana “x”:
http://www.elguille.info/NET/dotnet/previnstance.htm

Después, tal como has dicho, solo era cuestion de poner:
SendKeys.Send("xxxxxxx")
En mi aplicación.
Para saber la lista de keys, me he ido a aquí:
http://www.developerfusion.co.uk/show/57/

Si alguien quiere más información, este es mi mail:

[email protected]

Gracias a ti también Miguelón.

Saludos.


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
42382 Re: Interactuar con otra aplicacion. (Resp: 40924)30/06/08 13:29angel_debat   
Hola Jomabova.

Ya he acabado la aplicación para la que os realicé esta consulta.

Lo que me planteo ahora es:

Habría alguna manera de enviar una secuencia de teclas a una ventana que "NO FUERA LA ACTIVA"?

Hasta ahora, se como saber si una aplicación está en memoria y obtener su handles. Puedo activarla y enviarle Sendkeys. Pero, sin estar activa sería posible?
Mediante su nombre o handles??

Muchas gracias por tu tiempo...

Àngel


Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.
IDAsuntoFechaNick 
42408 Re: Interactuar con otra aplicacion. (Resp: 40924)01/07/08 13:27angel_debat   
Hola.

He encontrado una manera que creo que puede funcionar.

Mediante SendMessage.

He hecho un código muy interesante para probarlo pero no funciona.

Como me parece un tema de interés, he creado un nuevo post:

http://foros.elguille.info/Mensajes.aspx?ID=42407

Gracias.

Àngel



Si esta respuesta resuelve tu duda, por favor pulsa en la de este mensaje. Gracias.

 
(c) Guillermo 'guille' Som, 2005-2026  - foros.elGuille v1.0.6.3 (01/Jun/2021 12:45 GMT +2)  - (ASP.NET v4.0.30319.42000)
 
La hora GMT del servidor es: 09/06/2026 13:58:09 GMT