Visual Basic - Como crear un teclado virtual...

Life is soft - evento anual de software empresarial
 
Vista:

Como crear un teclado virtual...

Publicado por miguel (4 intervenciones) el 19/10/2005 08:31:14
Hola,

Quisiera crear un teclado virtual en VB. ¿Hay alguna forma para que cuando pulse una tecla del teclado virtual se escriba el carácter en la ventana que esté detrás del teclado?

Gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Como crear un teclado virtual...

Publicado por Sergio (23 intervenciones) el 19/10/2005 09:26:21
Prueba con la funcion SendKey (es un a API)

Sergio
Un Saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como crear un teclado virtual...

Publicado por miguel (4 intervenciones) el 19/10/2005 10:01:42
Gracias Sergio, pero... Yo quiero que la tecla pulsada la envie al programa que tengo en segundo plano. (ejem. Notepad).

¿Como puedo saber que programa tengo en segundo plano y como le puedo mandar el carácter de la tecla pulsada?

Gracias de nuevo y un saludo.

miguel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como crear un teclado virtual...

Publicado por Cecilia Colalongo (3116 intervenciones) el 19/10/2005 14:40:07
Lo que pides no es algo relativamente sencillo porque varía según las aplicaciones a las que quieras enviar las pulsaciones. Deberías utilizar BringWindowToTop para pasar la ventana que quieres hacia adelante y luego, keybd_event, por ejemplo para el Notepad:

lngHwnd = FindWindow("Notepad", "Untitled - Notepad")

BringWindowToTop lngHwnd

strProv = "Esta es una prueba"

For i = 1 To Len(strProv)
keybd_event Asc(Mid(strProv, i, 1)), 0, 0, 0
keybd_event Asc(Mid(strProv, i, 1)), 0, KEYEVENTF_KEYUP, 0
Next i

keybd_event 13, 0, 0, 0
keybd_event 13, 0, KEYEVENTF_KEYUP, 0

Las funciones son:

Public Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Public Declare Function BringWindowToTop Lib "user32" Alias "BringWindowToTop" (ByVal hwnd As Long) As Long

Public Declare Sub keybd_event Lib "user32" Alias "keybd_event" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como crear un teclado virtual...

Publicado por miguel (4 intervenciones) el 19/10/2005 17:17:22
Gracias Cecilia,

Como pasar la tecla pulsada a una aplicación determinada lo tengo resuelto.

Por ejemplo, con el siguiente código (no sé si es chapucero o no pero funciona)

Private Sub cmdA_Click()
AppActivate (Aplicacion)
SendKeys "{A}", False
Form1.SetFocus
End Sub

Donde Aplicacion es el id de una determinada aplicación que abro previamente con el shell:

Aplicacion = Shell("C:\WINNT\system32\notepad.EXE", 1)

Mi problema es, si tengo abierto el Word, Excel y Notepad, me gustaría poder identificar cual era el programa que tenia activo antes de seleccionar el programa del teclado virtual. De este modo poder pasar como Aplicacion el id del programa que tenía activo.

No sé si me estoy explicando o la estoy liando aún más.

Gracias por la ayuda y los comentarios.

miguel.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como crear un teclado virtual...

Publicado por miguel (4 intervenciones) el 19/10/2005 18:18:33
Quiero crear un teclado virtual como el "Teclado en Pantalla" de Windows pero en Visual Basic.

Un saludo,

miguel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Como crear un teclado virtual...

Publicado por Cecilia Colalongo (3116 intervenciones) el 19/10/2005 22:02:44
Tendrías que enumerar las ventanas y luego utilizar BringWindowToTop para pasarla al frente.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar