Retroceder   Foros del Web > Temas generales de computación > Programación > Visual Basic

Respuesta
 
Herramientas Desplegado
Antiguo 27-may-2006, 06:08   #1 (permalink)
Damntry ha deshabilitado el karma
 
Fecha de Ingreso: mayo-2006
Mensajes: 13
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
Damntry está desconectado   Responder Citando
Antiguo 27-may-2006, 09:21   #2 (permalink)
wansoft no se puede cailificar en este momento
 
Fecha de Ingreso: mayo-2006
Mensajes: 71
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 ^^
wansoft está desconectado   Responder Citando
Antiguo 27-may-2006, 10:09   #3 (permalink)
Damntry ha deshabilitado el karma
 
Fecha de Ingreso: mayo-2006
Mensajes: 13
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
Damntry está desconectado   Responder Citando
Antiguo 27-may-2006, 10:23   #4 (permalink)
Damntry ha deshabilitado el karma
 
Fecha de Ingreso: mayo-2006
Mensajes: 13
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
Damntry está desconectado   Responder Citando
Respuesta
No hay votos aún.


Herramientas
Desplegado

Normas de Publicación
No puedes crear nuevos temas
No puedes responder temas
No puedes subir archivos adjuntos
No puedes editar tus mensajes

BB code is Activado
Caritas están Activado
[IMG] está Activado
Código HTML está Desactivado


La Zona horaria es GMT -6. Ahora son las 00:02.


Message Board Statistics

LinkBacks Enabled by vBSEO 3.1.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93