Página 1 de 1

Problema con tecla Bloq Mayus

Publicado: 05 Sep 2011, 04:01
por melvinhn

Código: Seleccionar todo

While 1
HotKeySet("{ESC}", "Salir")
HotKeySet("a", "TeclearMinus")
HotKeySet("A", "TeclearMayus")
Sleep(10)
WEnd

Func TeclearMinus()
ConsoleWrite("Preciono la a Miniscula"&@CRLF)
EndFunc

Func TeclearMayus()
ConsoleWrite("Preciono la A Mayuscula"&@CRLF)
EndFunc

Func Salir()
Exit
EndFunc
Bueno se que sabran ayudarme

tengo dos dudas respecto a este problema

Primera duda-- :smt021

1- si tengo Bloq Mayus desactivada me tiene que salir (Preciono la a Miniscula)
2- si tengo Bloq Mayus activada me tiene que salir (Preciono la A Mayuscula)

La segunda duda-- :smt021
En el momento que el scrip esta ejecutado, el teclado no puede escribir la tecla a en minuscula o mayuscula

Re: Problema con tecla Bloq Mayus

Publicado: 05 Sep 2011, 07:25
por melvinhn
La unica idea que se me ocurre es talves con estos codigos ya que diferencia entre mayusculas
Código ASCII
Case Asc("a")
Case Asc("A")

o bien con el
Chr("a")
Chr("A")

pero no tengo idea

Re: Problema con tecla Bloq Mayus

Publicado: 05 Sep 2011, 08:48
por Ximorro
No tengo muy claro que HotKeySet funcione diferenciando la mayúscula y la minúscula, pues en realidad son la misma tecla.

Pero si lo que quieres realmente es ver es si está activo el bloqueo de mayúsculas se hace de otra manera.
Hace falta usar una función de la DLL user32.dll.

El siguiente código mira si se ha pulsado la mayúscula o minúscula según si está activo el "Bloq Mayús".
Por cierto, "presionar" es con S, no con C ;-)

Código: Seleccionar todo

Global Const $VK_CAPITAL = 0x14 ; Keycode de CapsLock (bloqueo mayúsculas)
Global $UserDLL = DllOpen("user32.dll")

HotKeySet("a", "_Tecla_A")
HotKeySet("{ESC}", "_Salir")

While 1
	Sleep(1000)
WEnd

Func _Tecla_A()
	If _GetCapsLock() Then
		ConsoleWrite("Presionada A mayúscula" & @CRLF)
	Else
		ConsoleWrite("Presionada A minúscula" & @CRLF)
	EndIf
EndFunc

Func _GetCapsLock()
    Local $ret
    $ret = DllCall($UserDLL,"long","GetKeyState","long",$VK_CAPITAL)
    Return $ret[0]
EndFunc

Func _Salir()
	DllClose($UserDLL)
	Exit
EndFunc
Otra cosa será además que se pueda estar presionando la tecla mayúsculas (no el bloqueo), para eso sí se puede hacer con HotKeySet mirando HotKeySet("+a", "_Shift_A"), por ejemplo, y en esa función, si no está "Bloq Mayús" tienes la mayúscula, y si lo está la minúscula (pues al presionar mayús hace la inversa de lo que tengas en bloqueo mayúsculas)

Re: Problema con tecla Bloq Mayus

Publicado: 05 Sep 2011, 19:54
por melvinhn
Hay disculpa por mi mala ortografia, bueno probare el codigo
hay les digo como me quedo... gracias por todo :smt024