Post by A_AhkUser » 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
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
Hola [color=#0080FF]beral235[/color],
Me alegra mucho ver que has logrado solucionarlo. Es en efecto una buena idea de utilizar [c]SplashImage[/c].;) Mas aun, utilizando [c]SplashImage[/c] se puede escibir el codigo en una línea gracias a las [url=https://www.autohotkey.com/docs/Variables.htm#Expressions]expresiones[/url] y, mas particularmente aqui, al [url=https://www.autohotkey.com/docs/Variables.htm#ternary]operador ternario[/url].
[code]xxxx := true
; xxxx := GetKeyState("Capslock", "T")
~CapsLock::SplashImage % (xxxx:=!xxxx) ? "F:\script\imagen.png" : "Off", B X600 Y400[/code]
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:
[indent=1]- El camino de la imagen se escribe entre comillas: en efecto, si el codigo utiliza [c]:=[/c] en vez de [c]=[/c] y mas generalemente expressiones, las cadenas de caracteres deben de ser puestas entre comillas.[/indent]
[indent=1]- He añadido un [c]MsgBox[/c] en el codigo que deberia tira alternativamente [c]1[/c] (verdadero) y [c]0[/c] (falso) si [c]GetKeyState("Capslock", "T")[/c] rescata bien el estatus de la tecla BloqMayus.[/indent]
Hay dos pêquenitos inconvenientes con [c]SplashImage[/c], no obstante. El primero es que no existe la contrapartida de [c]SHOW[/c]: [c]HIDE[/c] - 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 [c]return[/c] (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 [i]less is more[/i] ya que supongo que tu codigo hace bien muy el asunto :thumbup:
[code]; =============== 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
[/code]