Indicador Visual de la tecla BloqMayus

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.
beral235
Posts: 33
Joined: 21 Sep 2017, 09:33

Indicador Visual de la tecla BloqMayus

11 Jan 2018, 16:07

Hola a todos.
Explicare brevemente mi problema agradecería cualquiera ayuda de vuestra parte.

Quisiera que se muestre en la pantalla un cuadro de dialogo cuando active la tecla BloqMayus y una ves lo desactive el cuadro de dialogo se cierre, y asi sucesivamente, pero me permita seguir escribiendo, sin que la ventana emergente quede como principal.
Es algo asi como un indicador visual, que me permita saber que esta activo el BloqMayus.

Gracias de Antemano.
A_AhkUser
Posts: 884
Joined: 06 Mar 2017, 16:18
Location: France

Re: Indicador Visual de la tecla BloqMayus

11 Jan 2018, 18:33

Hola beral235,

Es un ejemplo que demuestre une manera de hacerlo mediante un Hotkey y un GUI. Puedes personalizar las variables en la parte superior del script; para encontrar la ubicacion de la imagen y su indice he utilizado uno de los enlaces compartido por Flipeador en este foro - Iconos De Windows: https://diymediahome.org/windows-icons- ... s/?lang=es. Por lo que se trata de los colores mira en la documentacion: https://www.autohotkey.com/docs/command ... htm#colors.

Code: Select all

; =============== variables (puedes personalizarlas) /===============
; posicion del indicador:
x := 0
y := 0
colorDeLaVentana := "000000"
ubicacionDeLaImagen := "imageres.dll"
indiceDeLaImagen := 55
; ===============/ variables ===============


WS_EX_CLICKTHROUGH := "E0x20" ; para que los tecleos pasen a través de la ventana
DetectHiddenWindows, On
Gui, CL:+ToolWindow -Caption +AlwaysOnTop +%WS_EX_CLICKTHROUGH% +LastFound
Gui, CL:Color, %colorDeLaVentana%
Gui, CL:Add, Pic, Icon%indiceDeLaImagen%, % ubicacionDeLaImagen ; especifica una imagen  (un símbolo de candado por ejemplo aqui)
Gui, CL:Show, % "NA x" . x . " y" . y . " AutoSize " . (GetKeyState("Capslock", "T") ? "" : "hide") ; muestra al inicio la GUI en caso de que la tecla BloqMayus ya esté activada
WinSet, Transparent, 190 ; a fin de que puedas ver a través de la ventana
DetectHiddenWindows, On
return

~CapsLock::GUI, CL:Show, % "NA " . (GetKeyState("Capslock", "T") ? "" : "hide") ; NA permite que la ventana aparezca sin activàndose; GetKeyState("Capslock", "T") rescata el estatus de la tecla BloqMayus
Un saludo
beral235
Posts: 33
Joined: 21 Sep 2017, 09:33

Re: Indicador Visual de la tecla BloqMayus

11 Jan 2018, 23:28

Hola A_AhkUser,
Gracias por por tomarte el tiempo en responder.

Estuve indagando acerca de los archivos .dll y se me hace difícil entender como usarlo en el código que enviaste, el icono del candado no me aparece, solo aparece el logo AHK en la barra de tareas cada vez que se activa el BloqMayus (no se puede maximizar).
El archivo imageres.dll tiene que estar en un lugar especifico para que se pueda leer?. Tengo que escribir la ubicación completa de dicho archivo? :roll:
A_AhkUser
Posts: 884
Joined: 06 Mar 2017, 16:18
Location: France

Re: Indicador Visual de la tecla BloqMayus

12 Jan 2018, 00:28

Es posible que no tengas el archivo imageres.dll... En cualquier caso, puedes alternativemente cargar su propia imagen/icono en la GUI:

Pruba con esa imagen:
imagen.png
imagen.png (143 Bytes) Viewed 352 times
salvala como imagen.png en la carpeta del script:

Code: Select all

; =============== variables (puedes personalizarlas) /===============
; posicion del indicador:
x := 0
y := 0
colorDeLaVentana := "000000"
ubicacionDeLaImagen := A_ScriptDir . "\imagen.png"
; ===============/ variables ===============


WS_EX_CLICKTHROUGH := "E0x20" ; para que los tecleos pasen a través de la ventana
DetectHiddenWindows, On
Gui, CL:+ToolWindow -Caption +AlwaysOnTop +%WS_EX_CLICKTHROUGH% +LastFound
Gui, CL:Color, %colorDeLaVentana%
Gui, CL:Add, Pic,, % ubicacionDeLaImagen ; especifica una imagen  (un símbolo de candado por ejemplo aqui)
Gui, CL:Show, % "NA x" . x . " y" . y . " AutoSize " . (GetKeyState("Capslock", "T") ? "" : "hide") ; muestra al inicio la GUI en caso de que la tecla BloqMayus ya esté activada
WinSet, Transparent, 190 ; a fin de que puedas ver a través de la ventana
DetectHiddenWindows, Off
return

~CapsLock::GUI, CL:Show, % "NA " . (GetKeyState("Capslock", "T") ? "" : "hide") ; NA permite que la ventana aparezca sin activàndose; GetKeyState("Capslock", "T") rescata el estatus de la tecla BloqMayus
beral235
Posts: 33
Joined: 21 Sep 2017, 09:33

Re: Indicador Visual de la tecla BloqMayus

12 Jan 2018, 20:45

:dance:
No te imaginas cuanto me ayudaste amigo, todos estos meses le tenia un panico a la documentacion de Ahk sobre todo por que esta en ingles, pero al no encontrar solución me puse a investigar y entendí mas o menos de que va la documentación, ahora hasta me dan ganas de investigar nuevos temas por mi cuenta :D
Encontre una posible solucion y lo mejor de todo es que si lo entiedo xd.

Code: Select all

~CapsLock::  
   xxxx := (!xxxx)
      {
      If ( xxxx )
      {
      	SplashImage,F:\script\imagen.png, b fs18 FM55 cwblack CTgreen X600 Y400  CWCoo, ,,   
      	
      }
      Else 
      {
      	SplashImage, Off
      }
      }
      return
Ahora bien.. el código que me enviaste es super porque se puede personalizar mucho más, pero no encuentro cual puede ser el error (no aparece el icono :cry: ).
Gracias nuevamente.
Por ultimo si no es mucha molestia una pregunta: En tu Pc corre normal el código que me enviaste arriba?
A_AhkUser
Posts: 884
Joined: 06 Mar 2017, 16:18
Location: France

Re: Indicador Visual de la tecla BloqMayus

12 Jan 2018, 22:48

Hola beral235,

Me alegra mucho ver que has logrado solucionarlo. Es en efecto una buena idea de utilizar SplashImage.;) Mas aun, utilizando SplashImage se puede escibir el codigo en una línea gracias a las expresiones y, mas particularmente aqui, al operador ternario.

Code: Select all

xxxx := true
; xxxx := GetKeyState("Capslock", "T")
~CapsLock::SplashImage % (xxxx:=!xxxx) ? "F:\script\imagen.png" : "Off", B X600 Y400
Respecto al otro codigo corre normal por mi parte (ahk v1.1.27.04 windows 8.1).
Solo veo dos cosas que podrian posiblemente surgir problemas:
- El camino de la imagen se escribe entre comillas: en efecto, si el codigo utiliza := en vez de = y mas generalemente expressiones, las cadenas de caracteres deben de ser puestas entre comillas.
- He añadido un MsgBox en el codigo que deberia tira alternativamente 1 (verdadero) y 0 (falso) si GetKeyState("Capslock", "T") rescata bien el estatus de la tecla BloqMayus.
Hay dos pêquenitos inconvenientes con SplashImage, no obstante. El primero es que no existe la contrapartida de SHOW: HIDE - ya que es necesario destruir/recrearlo de nuevo cada vez que se presione el hotkey cuando una GUI puede ser creado de una vez por todas antes el return (en la parte auto-ejecutada del script) - el hotkey, por su parte, contentandose con mostrarla/ocultarla. El segundo es que resultar mas facil modificar la transparencia y, mas generalemente, las características de la ventana-GUI (tales como la transparencia, hacer que los tecleos pasen a través de la ventana etc.). Pero less is more ya que supongo que tu codigo hace bien muy el asunto :thumbup:

Code: Select all

; =============== variables (puedes personalizarlas) /===============
; posicion del indicador:
x := 0
y := 0
colorDeLaVentana := "000000"
ubicacionDeLaImagen := "F:\script\imagen.png"
; ===============/ variables ===============


WS_EX_CLICKTHROUGH := "E0x20" ; para que los tecleos pasen a través de la ventana
DetectHiddenWindows, On
Gui, CL:+ToolWindow -Caption +AlwaysOnTop +%WS_EX_CLICKTHROUGH% +LastFound
Gui, CL:Color, %colorDeLaVentana%
Gui, CL:Add, Picture,, % ubicacionDeLaImagen ; especifica una imagen  (un símbolo de candado por ejemplo aqui)
Gui, CL:Show, % "NA x" . x . " y" . y . " AutoSize " . (GetKeyState("Capslock", "T") ? "" : "hide") ; muestra al inicio la GUI en caso de que la tecla BloqMayus ya esté activada
WinSet, Transparent, 190 ; a fin de que puedas ver a través de la ventana
DetectHiddenWindows, Off
return ; fin de la parte auto-ejecutada del script

~CapsLock::
MsgBox % GetKeyState("Capslock", "T")
GUI, CL:Show, % "NA " . (GetKeyState("Capslock", "T") ? "" : "hide") ; NA permite que la ventana aparezca sin activàndose; GetKeyState("Capslock", "T") rescata el estatus de la tecla BloqMayus
return

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: No registered users and 4 guests