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

 

 


Tema destacado:


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  .NET (C#, VB.NET, ASP)
| | | |-+  Programación Visual Basic (Moderadores: LeandroA, seba123neo)
| | | | |-+  Ayuda código anti flood para visual basic 2010-2013
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ayuda código anti flood para visual basic 2010-2013  (Leído 3,050 veces)
lGalazArayal1

Desconectado Desconectado

Mensajes: 1


Ver Perfil
Ayuda código anti flood para visual basic 2010-2013
« en: 10 Marzo 2015, 22:00 pm »

Hola bueno necesito un código para congelar el teclado por segundos. si escribo más de 6 mensajes seguidos sin esperar 3 segundos que el teclado se me congele y no pueda escribir y para que se descongele esperar 6 segundos espero que me ayuden gracias :D


« Última modificación: 12 Marzo 2015, 17:21 pm por lGalazArayal1 » En línea

okik


Desconectado Desconectado

Mensajes: 462


Ver Perfil
Re: Ayuda código anti flood para visual basic 2010-2013
« Respuesta #1 en: 13 Marzo 2015, 17:20 pm »

hola

Con VB6 usando SetWindowsHookEx no hay problema, funciona a la perfección. Pero en VB.Net no funciona. Cuando se llama a SetWindowsHookEx se obtiene un ID, que es un número largo. Ese numero cambia cada vez que se llama a SetWindowsHookEx de modo que una vez bloqueado para desbloquear el teclado, es necesario usar el mismo ID con que se bloqueó con UnhookWindowsHookEx.

https://www.daniweb.com/software-development/vbnet/threads/427872/disable-windows-key-on-keyboard-when-application-is-running


El caso es que encontré la forma de obtener el Id con SetWindowsHookEx en VB.Net, sin embargo NO BLOQUEA EL TECLADO, pero con VB6 sí. No se porqué.

Para VB.Net se necesita el triple de código, y como se puede ver en VB6 el código es muy reducido.

Código
  1. Private Declare Function SetWindowsHookEx Lib "user32" Alias "SetWindowsHookExA" (ByVal idHook As Long, ByVal lpfn As Long, ByVal hmod As Long, ByVal dwThreadId As Long) As Long
  2. Private Declare Function UnhookWindowsHookEx Lib "user32" (ByVal hHook As Long) As Long
  3. Private Const WH_KEYBOARD = 2
  4. Private X() As Long
  5. Dim Dm As Long
  6.  
  7. Private Sub Command1_Click()
  8. 'Bloquear teclado
  9. ReDim X(Dm)
  10. X(Dm) = SetWindowsHookEx(WH_KEYBOARD, AddressOf WinProcKeyBoard, App.hInstance, App.ThreadID)
  11. Dm = Dm + 1
  12. 'Nota: La tecla windows y Ctrl+Alt+Supr seguirán activos
  13. End Sub
  14. Private Sub Command2_Click()
  15. 'Desbloquear teclado
  16. UnhookWindowsHookEx X(0)
  17. End Sub
  18.  
  19. Private Sub Form_Load()
  20. Command1.Caption = "Bloquear teclado"
  21. Command2.Caption = "Desbloquear teclado"
  22. End Sub
  23.  
  24. '===========================================
  25. '///////////////////////////////////////////
  26. 'A TENER EN CUENTA ANTES DE USAR
  27. 'Al pulsar Command1 SetWindowsHookEx se
  28. 'obtiene un ID que es introducido en X.
  29. 'Este hilo es un número tal como 1442617; 2229059;...; etc
  30. 'El primer valor X, supongamos por ejemplo 1442617,
  31. 'es el ÚNICO VALOR QUE PUEDE DESBLOQUEAR EL TECLADO
  32. 'mediante UnhookWindowsHookEx (al pulsar en Command2)
  33. 'de modo que si se sigue pulsando command1, X irá adquiriendo
  34. 'nuevos valores que YA NO SERVIRÁN PARA DESBLOQUEAR,
  35. 'X perderá su valor original (1442617 en este caso ejemplo)
  36. 'y habrá que cerrar sesión o reiniciar windows para
  37. 'volver a disponer del teclado.
  38.  
  39. 'Para evitar eso, he creado un array en X
  40. 'De modo que el primer valor queda fijado en X(0)
  41. 'Los siguientes valores (si se sigue pulsando Command1)
  42. 'se irán introduciendo en X(1),X(2),..,X(n)
  43. '///////////////////////////////////////////
  44. '===========================================




« Última modificación: 13 Marzo 2015, 17:24 pm por okik » En línea

79137913


Desconectado Desconectado

Mensajes: 1.169


4 Esquinas


Ver Perfil WWW
Re: Ayuda código anti flood para visual basic 2010-2013
« Respuesta #2 en: 13 Marzo 2015, 19:31 pm »

HOLA!!!

La manera para bloquear el teclado es la que te dijo okik pero eso bloqueara el teclado en toda la pc  :o , en cambio podrias hacer un codigo para que cuando se modifique o se envien los datos del control en el cual los recibis se anule la peticion si hay "flood" como vos lo llamas.

GRACIAS POR LEER!!!
En línea

"Como no se puede igualar a Dios, ya he decidido que hacer, ¡SUPERARLO!"
"La peor de las ignorancias es no saber corregirlas"

 79137913                          *Shadow Scouts Team*
Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines