Foros del Web » Programación para mayores de 30 ;) » Programación General » Visual Basic clásico »

Simular en una aplicacion con graficos una pulsacion de teclado

Estas en el tema de Simular en una aplicacion con graficos una pulsacion de teclado en el foro de Visual Basic clásico en Foros del Web. Despues de intentarlo con vb 6 sin exito decidi probarlo en VB .NET.. y nada... me explico: Quiero lanzar una pulsacion simulada de teclado en ...
  #1 (permalink)  
Antiguo 27/05/2006, 06:08
 
Fecha de Ingreso: mayo-2006
Mensajes: 13
Antigüedad: 18 años
Puntos: 0
Pregunta Simular en una aplicacion con graficos una pulsacion de teclado

Despues de intentarlo con vb 6 sin exito decidi probarlo en VB .NET.. y nada... me explico:

Quiero lanzar una pulsacion simulada de teclado en un juego, he probado el tipico SendKeys.Send(tecla) que se envia mediante un timer cada X segundos.
Funciona bien en aplicaciones simples de windows, pero en cuanto entro en un juego deja de funcionar... mejor dicho, el programa sigue ejecutandose de fondo (ademas de mandar la pulsacion crea un log que funciona perfectamente) pero no simula la pulsacion de la tecla en la ventana de juego.

Ya que el timer funciona bien, le sigo echando la culpa al SendKeys. En VB 6 como ya dije probe varias API y alguna funcion de mas bajo nivel, pero seguia sin responder.

Si alguien pudiese encaminarme para saber el problema le estaria muy agradecido :D
  #2 (permalink)  
Antiguo 27/05/2006, 09:21
Avatar de wansoft  
Fecha de Ingreso: mayo-2006
Ubicación: Buenos Aires, Argentina
Mensajes: 81
Antigüedad: 18 años
Puntos: 1
Sonrisa

Tengo entendido que SendKeys funciona solo con el formulario donde se encuentra esta instruccion. Es muy incomodo para usarlo con otras aplicaciones.

Si deseas enviar pulsaciones de teclas a otras aplicaciones, como juegos o programas, tendrás que hacer uso de una API. Esa api es keybd_event

Y se declara de la siguiente manera.

Código:
Declare Sub keybd_event Lib "user32.dll" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long)
Si quieres simular la pulsacion de la tecla, tendras que declarar estas constantes primero

Código:
Const KEYEVENTF_KEYUP = &H2 'simula un suelte de la tecla
Si quisieramos simular la pulsacion de la tecla A escribiramos el siguiente codigo:

Código:
  keybd_event vbKeyA, 0, 0, 0   ' Presiona la tecla A    
keybd_event vbKeyA, 0, KEYEVENTF_KEYUP, 0   ' SUELTA la tecla A


Bueno, espero que este codigo te haya servido ^^
  #3 (permalink)  
Antiguo 27/05/2006, 10:09
 
Fecha de Ingreso: mayo-2006
Mensajes: 13
Antigüedad: 18 años
Puntos: 0
Me suena muchisimo esa API, quiza ya la probe en vb 6 pero con mi memoria vete a saber...
De hecho los accesos a teclas vbKey son de la version 6, en NET ya se llega a traves del enumerador "keys", pero no importa, voy a probarla y ahora te cuento como ha salido, muchisimas gracias :D:D
  #4 (permalink)  
Antiguo 27/05/2006, 10:23
 
Fecha de Ingreso: mayo-2006
Mensajes: 13
Antigüedad: 18 años
Puntos: 0
Mmm me temo que no va... funciona bien pero en cuanto entro en algun juego (aunque el programa continue de fondo porque los logs se crean bien) lo que es el envio de las teclas se pierde por los abismos del ordenador.

La verdad que no lo entiendo, es como si el juego se agarrase al teclado como una garrapata y no se lo dejase a ninguna aplicacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 23:12.