Página 1 de 1

Bloue de teclado

Publicado: 27 Jun 2014, 23:10
por eporti
Hola, espero me puedan ayudar, estoy haciendo un scrip donde introduzco datos por medio de un escaner y necesito bloquear el teclado para que unicamente introduzcan datos por el escaner.

Saludos
Gracias

Re: Bloue de teclado

Publicado: 28 Jun 2014, 00:03
por yasmany
BlockInput = Habilita/deshabilita el mouse y el teclado.
Busca "BlockInput " en la ayuda de autoit talvez te sirva.
Saludos :smt024

Re: Bloue de teclado

Publicado: 02 Jul 2014, 19:28
por eporti
Hola, ya lo habia intentado asi pero solo quiero bloquear el teclado, el mouse si lo necesito.
Gracias

Re: Bloue de teclado

Publicado: 02 Jul 2014, 23:54
por Chefito
Utilizando hook se puede. Se puede capturar la pulsación del teclado y anularla haciendo que el mensaje no llege. Todo esto esta más que explicado en post anteriores.
Como dije en un post reciente, buscad en el buscador del foros, que este tema está más que trillado. Un post con enlaces sobre este tema: http://www.emesn.com/autoitforum/viewto ... las#p16505

Y un post mucho más especifico donde explico un poco como se anulan teclas es este: http://www.emesn.com/autoitforum/viewto ... hook#p9406

Un ejemplo de lo dicho anteriormente lo tienes en la ayuda, en la función _WinAPI_SetWindowsHookEx que pertenece a la udf winapi. Quitando lo que no necesitas de ese ejemplo y no haciendo llegar el mensaje de la pulsación devolviendo -1, tienes lo que quieres:

Código: Seleccionar todo

#include <WinAPI.au3>
;~ #include <WindowsConstants.au3>
;~ #include <StructureConstants.au3>

Global $hHook, $hStub_KeyProc

OnAutoItExitRegister("Cleanup")

Local $hmod

$hStub_KeyProc = DllCallbackRegister("_KeyProc", "long", "int;wparam;lparam")
$hmod = _WinAPI_GetModuleHandle(0)
$hHook = _WinAPI_SetWindowsHookEx($WH_KEYBOARD_LL, DllCallbackGetPtr($hStub_KeyProc), $hmod)

While 1
	Sleep(10)
WEnd

; ===========================================================
; callback function
; ===========================================================
Func _KeyProc($nCode, $wParam, $lParam)
    Return -1
EndFunc   ;==>_KeyProc

Func Cleanup()
    _WinAPI_UnhookWindowsHookEx($hHook)
    DllCallbackFree($hStub_KeyProc)
EndFunc   ;==>Cleanup
Saludos.