Autor
|
Tema: mantener presionada tecla-api de windows (Leído 6,140 veces)
|
z_ane_666
Desconectado
Mensajes: 64
|
hola , estoy haciendo u programa para sacar especiales de videojuegos y este es mi codigo Private Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long) Private Declare Sub keybd_event Lib "user32" (ByVal bVk As Byte, ByVal bScan As Byte, ByVal dwFlags As Long, ByVal dwExtraInfo As Long) Const VK_forw = &H27 Const VK_back = &H25 Const VK_down = &H28 Const VK_a = &H41 Const KEYEVENTF_KEYUP = &H2 Private Sub Command1_Click() Timer1.Enabled = True End Sub
Private Sub Timer1_Timer() keybd_event VK_forw, 0, 0, 0 keybd_event VK_forw, 0, KEYEVENTF_KEYUP, 0 Sleep 100 keybd_event VK_back, 0, 0, 0 keybd_event VK_back, 0, KEYEVENTF_KEYUP, 0 Sleep 100 keybd_event VK_forw, 0, 0, 0 keybd_event VK_forw, 0, KEYEVENTF_KEYUP, 0 Sleep 100 keybd_event VK_down, 0, 0, 0 keybd_event VK_down, 0, KEYEVENTF_KEYUP, 0 Sleep 100 keybd_event VK_a, 0, 0, 0 keybd_event VK_a, 0, KEYEVENTF_KEYUP, 0 Timer1.Enabled = False
End Sub al probar este codigo en un archivo de texto, funciona correctamente, pero al probarlo estando activo el juego no funciona El problema que veo es que las teclas con esta api se presiona muy rapido, y es por eso que no reacciona el personaje lo que quisiera saber es si se puede adaptar de tal manera que la tecla este presionada por al menos 1800 ms y que luego se suelte con KEYEVENTF_KEYUP saludos NOTA: probe con un bucle, funciona muy bien en archivos de texto, pero no en el juego
|
|
|
En línea
|
|
|
|
NightMore
Desconectado
Mensajes: 27
|
Si necesitas que mantenga una tecla apretada es simple en un timer pones el intervalo adentro del timer pones esto
|
|
|
En línea
|
No uses la programacion contra el mal no cometas pecados,con programacion.Usa la programacion con sabiduria y dios te dara una mano.
Que dios los vendiga a todos
|
|
|
z_ane_666
Desconectado
Mensajes: 64
|
Si necesitas que mantenga una tecla apretada es simple en un timer pones el intervalo adentro del timer pones esto Pero eso solamente es una funcion exclusiva de visual basic , yo quiero hacerlo con API por que es general para todo el sistema
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. Si necesitas que mantenga una tecla apretada es simple en un timer pones el intervalo adentro del timer pones esto Existe un segundo parametro en Senkeys que le indica en MILISEGUNDOS el retardo... Sendkeys Sub SendKeys(String As String, [Wait]) Miembro de VBA.Interaction Envía pulsaciones de teclas a la ventana activa
Dicho paremetro es Opcional... Pero eso solamente es una funcion exclusiva de visual basic , yo quiero hacerlo con API por que es general para todo el sistema
SenKeys trabaja digamos que igual que el api solo que api es mas moldeable y SendKeys solo limita a la ventana activa ese es un problema en especial cuando se le quieren enviar las pulsaciones a una ventana oculta ( llamase Hwnd ) Con esto puede hacer el retardo: ' ' ///////////////////////////////////////////////////////////// ' // Autor: BlackZeroX ( Ortega Avila Miguel Angel ) // ' // // ' // Web: http://InfrAngeluX.Sytes.Net/ // ' // // ' // |-> Pueden Distribuir Este codigo siempre y cuando // ' // no se eliminen los creditos originales de este codigo // ' // No importando que sea modificado/editado o engrandecido // ' // o achicado, si es en base a este codigo // ' ///////////////////////////////////////////////////////////// ' // http://infrangelux.sytes.net/Blog/index.php?option=com_content&view=article&id=6:artwait&catid=2:catprocmanager&Itemid=8 ' ///////////////////////////////////////////////////////////// Option Explicit Private Declare Function WaitMessage Lib "user32" () As Long Enum eTime Horas = 3600 Minutos = 60 Segundos = 1 End Enum Public Sub Wait(ByVal vToWait&, Optional ByVal ThisWait As eTime = Segundos, Optional ByVal UseAllProc As Boolean = False) Dim vDateE As Date vDateE = DateAdd("s", vToWait& * (ThisWait + 0), Time) Do While vDateE > Time Call WaitMessage If Not UseAllProc Then DoEvents Loop End Sub
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
raul338
Desconectado
Mensajes: 2.633
La sonrisa es la mejor forma de afrontar las cosas
|
Sleep 100 keybd_event VK_a, 0, 0, 0 Sleep 50 keybd_event VK_a, 0, KEYEVENTF_KEYUP, 0
Probaste eso? o prueba mas intervalos ya que como dices que presiona muy rapido, puedes agregarle "tiempo"
|
|
|
En línea
|
|
|
|
z_ane_666
Desconectado
Mensajes: 64
|
muchas gracias BlackZeroX por tu codigo, ahoira tratare de adaptarlo
raul, ya habia probado lo que me pusiste y no funciona, pero igual hare de nuevo el intento con doevents, quiza algo pase XD
saludos
|
|
|
En línea
|
|
|
|
BlackZeroX
Wiki
Desconectado
Mensajes: 3.158
I'Love...!¡.
|
. Sleep()
Te va a dormir el hilo actual de tu programa es decir te va a parar cualquier proceso, mientras que mi funcion Wait(), solo te va a "Dormir" el proceso actual mas no el hilo.
Dulces Lunas!¡.
|
|
|
En línea
|
The Dark Shadow is my passion.
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
Detectar tecla presionada y si es tal tecla hacer tal cosa
Programación Visual Basic
|
Wiidos
|
3
|
6,194
|
20 Marzo 2011, 19:15 pm
por raul338
|
|
|
Mantener presionada FLECHA
Programación Visual Basic
|
ŞCØRPIØN-X3
|
2
|
1,957
|
9 Agosto 2011, 03:10 am
por ŞCØRPIØN-X3
|
|
|
Mantener programas tras apagado (windows 7 Profesional)
« 1 2 »
Windows
|
tim12
|
10
|
6,203
|
7 Junio 2012, 16:08 pm
por Randomize
|
|
|
Estos son los PCs con CPU Skylake que podrán mantener Windows 7 y 8.1 hasta 2017
Noticias
|
wolfbcn
|
0
|
1,343
|
23 Enero 2016, 14:22 pm
por wolfbcn
|
|
|
Tecla Windows No Me Funciona
Windows
|
AlbertoPerez
|
6
|
9,323
|
6 Septiembre 2021, 22:13 pm
por Randomize
|
|