Enviar caracteres a varias ventanas a la vez

Enviar caracteres a varias ventanas a la vez

Postby JmGarcia » Wed Feb 13, 2008 7:45 pm

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
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Postby Antonio Linares » Wed Feb 13, 2008 8:06 pm

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
Antonio Linares
Site Admin
 
Posts: 41397
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby JmGarcia » Wed Feb 13, 2008 8:24 pm

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
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Postby FiveWiDi » Wed Feb 13, 2008 9:28 pm

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
/* *************************** */
FiveWiDi
 
Posts: 1083
Joined: Mon Oct 10, 2005 2:38 pm

Postby JmGarcia » Wed Feb 13, 2008 10:34 pm

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
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Postby FiveWiDi » Thu Feb 14, 2008 8:07 am

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.
FiveWiDi
 
Posts: 1083
Joined: Mon Oct 10, 2005 2:38 pm

Postby Biel EA6DD » Thu Feb 14, 2008 8:34 am

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 view
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
Biel EA6DD
 
Posts: 682
Joined: Tue Feb 14, 2006 9:48 am
Location: Mallorca

Postby Antonio Linares » Thu Feb 14, 2008 11:18 am

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
Antonio Linares
Site Admin
 
Posts: 41397
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby JmGarcia » Thu Feb 14, 2008 8:16 pm

Muchisimas gracias, Biel.

Biel EA6DD wrote:
Code: Select all  Expand view
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
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Postby Antonio Linares » Thu Feb 14, 2008 8:27 pm

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
Antonio Linares
Site Admin
 
Posts: 41397
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Postby JmGarcia » Thu Feb 14, 2008 8:33 pm

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

Postby JmGarcia » Fri Feb 15, 2008 3:05 pm

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

Postby JmGarcia » Mon Feb 18, 2008 7:39 pm

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
User avatar
JmGarcia
 
Posts: 654
Joined: Mon May 29, 2006 3:14 pm
Location: Madrid - ESPAÑA

Re: Enviar caracteres a varias ventanas a la vez

Postby Rolaci » Tue Dec 20, 2011 2:42 pm

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.
Rolaci
 
Posts: 20
Joined: Fri Dec 16, 2011 4:17 pm


Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 40 guests