Enviar caracteres a varias ventanas a la vez

Post Reply
User avatar
JmGarcia
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA
Been thanked: 1 time

Enviar caracteres a varias ventanas a la vez

Post by JmGarcia »

Imaginaros que tengo abiertas varias ventanas de consola (CMD.EXE) con un telnet o ftp o directorio distinto en cada una.
Quiero mandar a TODAS las ventanas la misma secuencia de caracteres mas el intro.
¿ Como lo hago ?

Como ejemplo mirar el "Cluster Telnet (ctelnet)" de Solaris (Sun Cluster Console).

Image

Image

Image
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
Antonio Linares
Site Admin
Posts: 42529
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 77 times
Contact:

Post by Antonio Linares »

JM,

Necesitarias hacer una pequeña aplicación que enviase lo que escribieses a los handles de esas cuatro ventanas.

El problema es que si son ventanas de consola, entonces no se les puede enviar mensajes. Si son ventanas normales, si.
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
JmGarcia
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA
Been thanked: 1 time

Post by JmGarcia »

Antonio Linares wrote:El problema es que si son ventanas de consola, entonces no se les puede enviar mensajes. Si son ventanas normales, si.

Bueno, parece que algo se puede hacer... ¿ no ?
Bueno pueden ser ventanas de una aplicación de telnet (como la telnet de NT, que funciona en Win2000/XP), no tiene que ser de consola.
Podríamos experimentar con varios NotePad.exe.
Explícame esto ultimo (Si son ventanas normales, si).

P.D.: Que rarito soy ¿ verdad ?, es que con lo de "altas, bajas, modificaciones, consultas, etc..." no me divierto :lol:
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
FiveWiDi
Posts: 1238
Joined: Mon Oct 10, 2005 2:38 pm
Has thanked: 3 times
Been thanked: 4 times

Post by FiveWiDi »

JmGarcia wrote:
Antonio Linares wrote:El problema es que si son ventanas de consola, entonces no se les puede enviar mensajes. Si son ventanas normales, si.

Bueno, parece que algo se puede hacer... ¿ no ?
Bueno pueden ser ventanas de una aplicación de telnet (como la telnet de NT, que funciona en Win2000/XP), no tiene que ser de consola.
Podríamos experimentar con varios NotePad.exe.
Explícame esto ultimo (Si son ventanas normales, si).

P.D.: Que rarito soy ¿ verdad ?, es que con lo de "altas, bajas, modificaciones, consultas, etc..." no me divierto :lol:


Empieza por capturar la ventana:

oWnd:WCapture( cTitle, .T. )

sigue con enviar a la ventana las pulsaciones de las teclas así:

FWKEYBOARD( oWnd, VK_INSERT )

a ver si tienes suerte.

Saludos
Carlos G.

/* *************************** */
FUNCTION FWKEYBOARD(OWND,NKEY)
OWND:SETFOCUS()
OWND:POSTMSG( WM_KEYDOWN, NKEY, 0)
RETURN NIL
/* *************************** */
User avatar
JmGarcia
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA
Been thanked: 1 time

Post by JmGarcia »

FiveWiDi wrote:oWnd:WCapture( cTitle, .T. )

¿ Quien es oWnd ?

Me da error: Error description: Error BASE/1003 Variable does not exist: OWND
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
FiveWiDi
Posts: 1238
Joined: Mon Oct 10, 2005 2:38 pm
Has thanked: 3 times
Been thanked: 4 times

Post by FiveWiDi »

JmGarcia wrote:
FiveWiDi wrote:oWnd:WCapture( cTitle, .T. )

¿ Quien es oWnd ?

Me da error: Error description: Error BASE/1003 Variable does not exist: OWND


Perdón corrí demasido.

debe ser algo así:

oWnd := TWCapture:New( cTitle )

Busca en el foro Capture, y cTitle es el título de la ventana de la aplicación a la que quieres acceder.

Saludos
Carlos G.
User avatar
Biel EA6DD
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca
Contact:

Post by Biel EA6DD »

Si tienes el telnet en ventanas normales, el tema lo puedes solucionar de la siguiente manera.

Primero tienes que capturar el manejador de la ventana donde esta el telnet, lo mas facil es localizar por el texto del captiion de ventana. Una vez tienes el manejador (hWnd), se trata de ir enviado mensjes a la ventana.

Code: Select all | Expand

LOCAL hWnd1,hWnd2
hWnd1:=FindWindow(0,"cconsole: host rigor")
hWnd2:=FindWindow(0,"cconsole: host slash")
//Si hWnd>0 ventana encontrada

Envia(hWnd1, "texto que se envia")
Envia(hWnd2, "texto que se envia")
...
//--------------------------------
STATIC FUNCTION Envia(hWnd,uVal)
   LOCAL nLen,i
   IF ValType(uVal)=='N'
      uVal:=AllTrim(Str(Int(uVal)))  //asumo que no se usan decimales.
   ENDIF
   nLen:=Len(uVal)
   FOR i:=1 TO nLen
      SendMessage( hWnd, WM_KEYDOWN, Asc( SubStr(uVal,i,1)) )
   NEXT
RETURN NIL

Si te funciona puedes obtimizar el proceso guardando los manejadores en un array, y hacer el envio de teclas para todos los elementos del array.
Saludos desde Mallorca
Biel Maimó
http://bielsys.blogspot.com/
User avatar
Antonio Linares
Site Admin
Posts: 42529
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 77 times
Contact:

Post by Antonio Linares »

JM,

Por ventanas normales me refiero a ventanas que no sean de consola (las que se crean con "cmd")
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
JmGarcia
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA
Been thanked: 1 time

Post by JmGarcia »

Muchisimas gracias, Biel.

Biel EA6DD wrote:

Code: Select all | Expand

SendMessage( hWnd, WM_KEYDOWN, Asc( SubStr(uVal,i,1)) )


Con WM_KEYDOWN no me funciona pero con WM_CHAR me funciona perfecto con ventanas de consola de MS-DOS (cmd.exe)
Es justo lo que quería.

Por seguir experimentando he probado con el BlocDeNotas y NO me funciona. Supongo que habrá que darle el foco mandarle los caracteres y después dar el foco de nuevo a la aplicación que maneja todo.

¿ Como le doy el foco a otra ventana ?
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
Antonio Linares
Site Admin
Posts: 42529
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Has thanked: 31 times
Been thanked: 77 times
Contact:

Post by Antonio Linares »

JM,

> con WM_CHAR me funciona perfecto con ventanas de consola de MS-DOS (cmd.exe)

Pues es toda una sorpresa :-) Estás usando XP ?

> ¿ Como le doy el foco a otra ventana ?

SetFocus( hWnd )
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
JmGarcia
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA
Been thanked: 1 time

Post by JmGarcia »

Antonio Linares wrote:Pues es toda una sorpresa :-) Estás usando XP ?
Pues si con XP. Mañana lo probare con Win2000.

Antonio Linares wrote:SetFocus( hWnd )

¿ Y como vuelvo a tener el foco yo ?

¿ Y como cojo el "caption" o título de la ventana deseada ?
Esto último lo digo porque cuando ejecutas un FTP o TELNET (por ejemplo) el titulo de la ventana de comandos (simbolo del sistema) cambia. Y quisiera ir refrescando el array de títulos de ventanas.
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
JmGarcia
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA
Been thanked: 1 time

Post by JmGarcia »

JmGarcia wrote:
Antonio Linares wrote:Pues es toda una sorpresa :-) Estás usando XP ?
Pues si con XP. Mañana lo probare con Win2000.

Pues probado en Windows2000, tambien funciona.

Seguiremos informando...
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
User avatar
JmGarcia
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA
Been thanked: 1 time

Post by JmGarcia »

Ahora me encuentro con el problema de como enviar a otra ventana secuencias de caracteres como Ctrl-C o Ctrl-D...
Con la opcion WM_CHAR no vale.
Mi abuelo decía: Los aviones vuelan porque Dios quiere, y los helicópteros ni Dios sabe porque vuelan.
FWH 16.02, xHarbour 1.2.3, Harbour 3.2.0, WorkShop 4.5, AJ Make 0.30, Borlan BCC 7.00, VisualStudio 2013
Rolaci
Posts: 20
Joined: Fri Dec 16, 2011 4:17 pm

Re: Enviar caracteres a varias ventanas a la vez

Post by Rolaci »

Hola JM, me pregunto si pudiste resolver el tema de enviar pulsaciones de teclado, sucede que estoy tratando de interactuar con una sesion en vms (alphaserver), y entro perfecto, pero tengo la limitacion de solo poder usar el alfabeto completo y los numeros, ningun otro simbolo, por cierto, utilice:
SendMessage( hWnd, __KEYBOARD(CHR(NN)) ) y funciona perfecto pero como ya dije, solo para letras y numeros,
cualquier adelanto que hayas tenido se agradecera.
He probado con telnet y powerterm y con ambos sucede lo mismo.
Saludos.
Roberto.
Post Reply