Crear varios modos en un solo archivo ahk

Esta sección es para preguntas sobre programación/scripting usando AutoHotkey.

Moderator: Flipeador

beral235
Posts: 36
Joined: 21 Sep 2017, 09:33

Crear varios modos en un solo archivo ahk

13 Feb 2018, 19:02

Buen día a todos, curioseando por GitHub me encontré con las lineas de código que dan vida al editor de textos VIM (es una emulación en versión .ahk) y me intereso la parte en la que se manejan varios modos con un solo archivo Ahk. Segun entiendo cada modo tiene su icono en la barra de tareas.

Quisiera que me echen una mano, con un ejemplo breve o indicándome qué capítulos de la documentación AHK leer para que pueda comprender este tema, porque por ahora no sé por dónde empezar.
Gracias de antemano.
Attachments
Modos.png
Modos.png (8.29 KiB) Viewed 2870 times
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Crear varios modos en un solo archivo ahk

18 Feb 2018, 19:02

Hola, ¿lo que estas queriendo hacer es que un mismo Script muestre más de un icono en el área de notificación en la barra de tareas?
beral235
Posts: 36
Joined: 21 Sep 2017, 09:33

Re: Crear varios modos en un solo archivo ahk

21 Feb 2018, 13:36

Hola Flipeador, fue mi error, en las imagenes se muestra la ejecución del mismo Script pero de sus copias (2 copias). Lo que busco es cambiar el icono y al mostrarse dicho icono se ejecuten ciertos Scripts y al alternar de icono se ejecuten otros Script pero ya no lo anteriores. Es una especie de "modo" o función que habilita scripts cuando un icono aparece.

Algo me decía que la explicación inicial no estaba del todo clara :C
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Crear varios modos en un solo archivo ahk

21 Feb 2018, 16:32

Pues la verdad la explicación sigue sin estar del todo clara...
Es una especie de "modo" o función que habilita scripts cuando un icono aparece
¿Te estás refiriendo a tu propio Script o a otro (me refiero al script u otra aplicación que haces referencia con «cuando un icono aparece»)?
¿que utilidad o ventaja crees que te daría el hecho de tener varios Script ejecutándose al mismo tiempo?

Para cambiar el icono debes utilizar el comando Menu, como se explica en éste enlace.
Para ejecutar otro Script puedes utilizar el comando Run.
beral235
Posts: 36
Joined: 21 Sep 2017, 09:33

Re: Crear varios modos en un solo archivo ahk

24 Feb 2018, 15:24

Hola Flipeador, espero que esta explicación sea mas clara.

Code: Select all

1::
	; Al presionar "1", el teclado no varia 
	return
2::
	; Al presionar "2", se reasigna parte del teclado
	 i::Up
	 k::Down
	 j::Left
	 l::Right
	 return
3::
	; Al presionar "3", se reasigna nuevamente parte del teclado
	 u::1
	 i::2
	 o::3
	 j::4
	 ;Otros scripts...
	 return
Esperaré ansioso vuestra ayuda. :)

Lo anterior se puede acompañar de estos iconos respectivamente.
Attachments
Normal.png
Al presionar 1
Normal.png (2.61 KiB) Viewed 2748 times
Direccion.png
Al presionar 2
Direccion.png (1.89 KiB) Viewed 2748 times
Numeros.png
Al presionar 3
Numeros.png (1.33 KiB) Viewed 2748 times
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Crear varios modos en un solo archivo ahk

24 Feb 2018, 18:43

Hubiese estado bien que respondas las preguntas que te hice o por lo menos algún comentario sobre los comandos que te dije que vieses... poca información... tal vez sea esto:

Code: Select all

; el simbolo «$» es para que 'SendInput 1/2/3' no llame a estas reasignaciónes en lugar de enviar el número
$1::b := c := FALSE ; activar / desactivar «b» y «c»
$2::b := !b ; activar / desactivar «b»
$3::c := !c ; activar / desactivar «c»

; solo tendrá efecto si «b» es verdadero
#If b
i::SendInput {Up}
k::SendInput {Down}
j::SendInput {Left}
l::SendInput {Right}
#If

; solo tendrá efecto si «c» es verdadero
#If c
u::SendInput 1
i::SendInput 2
o::SendInput 3
j::SendInput 4
#If
Si quieres cambiar el icono revisa el comando que te puse en el anterior comentario; luego cambiarías, por ejemplo, $2::b := !b por:

Code: Select all

$2::
b := !b
Menu, Tray, Icon, [...]
Return
beral235
Posts: 36
Joined: 21 Sep 2017, 09:33

Re: Crear varios modos en un solo archivo ahk

25 Feb 2018, 11:59

Hola Flipeador, gracias por la ayuda.
Con respecto a la pregunta, pues creo que es mejor usar condicionales para asi no usar varios scripts (es lo que buscaba :thumbup: ).
Al Script que enviaste le agrege un condicional para que las rutinas solo se activen una a la vez (o "2" o "3"), porque noté que habia un conflicto. Aque esta el codigo:

Code: Select all

$1::
b := c := FALSE ; activar / desactivar «b» y «c» 
return
$2::
if c {
	c := !c
}
b := !b	
Return
$3::
if b {
	b := !b
}
c := !c
return
; solo tendrá efecto si «b» es verdadero
#If b
i::SendInput {Up}
k::SendInput {Down}
j::SendInput {Left}
l::SendInput {Right}
#If

; solo tendrá efecto si «c» es verdadero
#If c
u::SendInput 1
i::SendInput 2
o::SendInput 3
j::SendInput 4
#If
Una ultima ayuda más si no es mucho pedir ya que luego de varios intentos encontré una especie de bug, que no logro entender.

Code: Select all

#IfWinActive notepad
F1::
a := !a
return
;Cualque Script encima de este "#If a", si respeta el "#IfWinActive notepad"
	#If a
    	 :*:hl::Pruevaa
	#If
 ;Cualque Script debajo de este "#If", no respeta el "#IfWinActive notepad"
 :*?:ts::Bug?
#IfWinActive
User avatar
Flipeador
Posts: 1204
Joined: 15 Nov 2014, 21:31
Location: Argentina
Contact:

Re: Crear varios modos en un solo archivo ahk

25 Feb 2018, 12:50

Una ultima ayuda más si no es mucho pedir ya que luego de varios intentos encontré una especie de bug, que no logro entender.
No se si será lo que dices, pero el #If a sería como el return de #IfWinActive notepad, por lo que el #IfWinActive último no tiene sentido, y :*?:ts::Bug? ya no formaría parte de la condición inicial #IfWinActive notepad.
beral235
Posts: 36
Joined: 21 Sep 2017, 09:33

Re: Crear varios modos en un solo archivo ahk

25 Feb 2018, 14:06

Muchas gracias por tomarte el tiempo en responder Flipeador, aún tengo dudas, pensaba abrir un nuevo tema pero antes consultaré la documentación.
Saludos. :wave:

Return to “Pedir Ayuda”

Who is online

Users browsing this forum: Google [Bot] and 20 guests