elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Curso de javascript por TickTack


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  mantener presionada tecla-api de windows
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: mantener presionada tecla-api de windows  (Leído 6,131 veces)
z_ane_666

Desconectado Desconectado

Mensajes: 64


Ver Perfil
mantener presionada tecla-api de windows
« en: 17 Noviembre 2010, 02:44 am »

hola , estoy haciendo u programa para sacar especiales de videojuegos y este es mi codigo

Código:
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 Desconectado

Mensajes: 27



Ver Perfil
Re: mantener presionada tecla-api de windows
« Respuesta #1 en: 17 Noviembre 2010, 02:54 am »

Si necesitas que mantenga una tecla apretada es simple en un timer pones el intervalo adentro del timer pones esto
Código:
Sendkeys "Letra"


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 Desconectado

Mensajes: 64


Ver Perfil
Re: mantener presionada tecla-api de windows
« Respuesta #2 en: 17 Noviembre 2010, 03:28 am »

Si necesitas que mantenga una tecla apretada es simple en un timer pones el intervalo adentro del timer pones esto
Código:
Sendkeys "Letra"

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 Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: mantener presionada tecla-api de windows
« Respuesta #3 en: 17 Noviembre 2010, 04:43 am »

.
Si necesitas que mantenga una tecla apretada es simple en un timer pones el intervalo adentro del timer pones esto
Código:
Sendkeys "Letra"

Existe un segundo parametro en Senkeys que le indica en MILISEGUNDOS el retardo... Sendkeys 

Código
  1.  
  2. Sub SendKeys(String As String, [Wait])
  3.    Miembro de VBA.Interaction
  4.    Envía pulsaciones de teclas a la ventana activa
  5.  
  6.  

Dicho paremetro es Opcional...

Cita de:  link=topic=310913.msg1543529#msg1543529 date=1289960891
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:

Código
  1.  
  2. '
  3. '   /////////////////////////////////////////////////////////////
  4. '   // Autor:   BlackZeroX ( Ortega Avila Miguel Angel )       //
  5. '   //                                                         //
  6. '   // Web:     http://InfrAngeluX.Sytes.Net/                  //
  7. '   //                                                         //
  8. '   //    |-> Pueden Distribuir Este codigo siempre y cuando   //
  9. '   // no se eliminen los creditos originales de este codigo   //
  10. '   // No importando que sea modificado/editado o engrandecido //
  11. '   // o achicado, si es en base a este codigo                 //
  12. '   /////////////////////////////////////////////////////////////
  13. '   // http://infrangelux.sytes.net/Blog/index.php?option=com_content&view=article&id=6:artwait&catid=2:catprocmanager&Itemid=8
  14. '   /////////////////////////////////////////////////////////////
  15.  
  16. Option Explicit
  17.  
  18. Private Declare Function WaitMessage Lib "user32" () As Long
  19.  
  20. Enum eTime
  21.    Horas = 3600
  22.    Minutos = 60
  23.    Segundos = 1
  24. End Enum
  25.  
  26. Public Sub Wait(ByVal vToWait&, Optional ByVal ThisWait As eTime = Segundos, Optional ByVal UseAllProc As Boolean = False)
  27. Dim vDateE      As Date
  28.    vDateE = DateAdd("s", vToWait& * (ThisWait + 0), Time)
  29.    Do While vDateE > Time
  30.        Call WaitMessage
  31.        If Not UseAllProc Then DoEvents
  32.    Loop
  33. End Sub
  34.  
  35.  
En línea

The Dark Shadow is my passion.
raul338


Desconectado Desconectado

Mensajes: 2.633


La sonrisa es la mejor forma de afrontar las cosas


Ver Perfil WWW
Re: mantener presionada tecla-api de windows
« Respuesta #4 en: 17 Noviembre 2010, 15:14 pm »

Código
  1. Sleep 100
  2. keybd_event VK_a, 0, 0, 0
  3. Sleep 50
  4. keybd_event VK_a, 0, KEYEVENTF_KEYUP, 0
  5.  
Probaste eso? o prueba mas intervalos :P ya que como dices que presiona muy rapido, puedes agregarle "tiempo" :xD
En línea

z_ane_666

Desconectado Desconectado

Mensajes: 64


Ver Perfil
Re: mantener presionada tecla-api de windows
« Respuesta #5 en: 18 Noviembre 2010, 03:29 am »

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 Desconectado

Mensajes: 3.158


I'Love...!¡.


Ver Perfil WWW
Re: mantener presionada tecla-api de windows
« Respuesta #6 en: 18 Noviembre 2010, 04:57 am »

.
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.
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

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,180 Último mensaje 20 Marzo 2011, 19:15 pm
por raul338
Mantener presionada FLECHA
Programación Visual Basic
ŞCØRPIØN-X3 2 1,952 Último mensaje 9 Agosto 2011, 03:10 am
por ŞCØRPIØN-X3
Mantener programas tras apagado (windows 7 Profesional) « 1 2 »
Windows
tim12 10 6,200 Último mensaje 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,322 Último mensaje 23 Enero 2016, 14:22 pm
por wolfbcn
Tecla Windows No Me Funciona
Windows
AlbertoPerez 6 9,274 Último mensaje 6 Septiembre 2021, 22:13 pm
por Randomize
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines