Re: detectar el estado de bloqueo de mayúsculas
Publicado: 14 Sep 2009, 13:36
Hola
Sigo intentando arreglar el problemilla que daba la función GetKeyState (O a saber que), que hacía que la convinación de teclas Alt+Tab no fuera detectada si la gui del programa que las detectaba estaba activa...
Con ayuda de Ximorro y Chefito, juntando dos códigos suyos que hacen lo mismo (Detectar teclas pulsadas) parece que puede conseguirse, pero aún no lo he logrado del todo.
He hecho esto:
Teóricamente debería detectarse la convinación de teclas, de echo en algunas ocasiones (cuando le apetece) funciona. pero solo eso, cuando le apetece
¿Se os ocurre como pulirlo para que funcione como debe?
(Igual que está hecho por Chefito más arriba, que detecta perfectamente la pulsación de ambas teclas)....
Aclaro, que con la función _IsPressed no he conseguido que funcione bien tampoco, obtengo un resultado similar al que devuelve éste código.
gracias,
Salu2!
Sigo intentando arreglar el problemilla que daba la función GetKeyState (O a saber que), que hacía que la convinación de teclas Alt+Tab no fuera detectada si la gui del programa que las detectaba estaba activa...
Con ayuda de Ximorro y Chefito, juntando dos códigos suyos que hacen lo mismo (Detectar teclas pulsadas) parece que puede conseguirse, pero aún no lo he logrado del todo.
He hecho esto:
Código: Seleccionar todo
#include <Misc.au3>
#include <GUIConstantsEx.au3>
Global $UserDLL = DllOpen("user32.dll"), $codigo, $i, $txt
Opt("GUIOnEventMode", 1)
Opt('GUICloseOnESC', 0)
GUICreate("Teclitas", 240, 100)
$lblTit = GUICtrlCreateLabel("Teclas presionadas (código hexadecimal):", 15, 20, 200, 52)
$lblCodigos = GUICtrlCreateLabel("", 20, 40, 160, 52)
GUISetOnEvent($GUI_EVENT_CLOSE, "_Salir")
GUISetState()
While 1
$txt = ""
for $i = 0 to 255
$codigo = StringRight(Hex($i),2) ;Pasamos a string hexadecial
If _IsPressed($codigo, $UserDLL) Then
$txt &= $codigo & " "
EndIf
Next
;GUICtrlSetData($lblCodigos, $txt)
$txt=StringTrimRight($txt, 1)
If ($txt==12 And PulsadaKey(0x09)) Then
msgbox(0, "", $txt)
EndIf
WEnd
Func PulsadaKey($codigoKey=0x9)
$ret = DllCall("user32.dll", "long", "GetKeyState", "long", $codigoKey)
If $ret[0]=0 Or $ret[0]=1 Then
$pulsada=False
Else
$pulsada=True
EndIf
Return $pulsada
EndFunc
Func _Salir()
DllClose($UserDLL)
Exit
EndFunc
¿Se os ocurre como pulirlo para que funcione como debe?
(Igual que está hecho por Chefito más arriba, que detecta perfectamente la pulsación de ambas teclas)....
Aclaro, que con la función _IsPressed no he conseguido que funcione bien tampoco, obtengo un resultado similar al que devuelve éste código.
gracias,
Salu2!