miércoles, 19 de marzo de 2008

AutoHotKey, usos y ejemplos (1)

Mi nombre es Jesús, y soy un adicto. Aun puedo recordar la época en que estaba limpio. Era allá por el año de 1992. Pero entonces me lo ofrecieron. Me lo pusieron enfrente, y no pude resistir la tentación. Durante 15 años mi vida ha estado dominada por mi adicción. Pero ahora, luego de mucho trabajo, estoy logrando dejarlo, limpiarme. Y el AutoHotkey ha sido una de las mejores ayudas para este éxito. Era justo lo que necesitaba para limpiar mi vida de la maldición del ratón.

Esta bien, no es una maldición, pero hoy me levanté un poco más cinematográfico que de costumbre ;-)

Empecé a usar el AutoHotkey como una manera de crear teclas rápidas para ejecutar programas que usaba frecuentemente (antes de descubrir el Launchy), y para generar automáticamente textos repetitivos, como firmas de correos y cosas por el estilo. Con el tiempo se convirtió, además, en una herramienta de automatización de tareas muy eficiente y sencilla.

El sitio web de AutoHotkey tiene un excelente tutorial de introducción (la documentación está en varios idiomas, pero lamentablemente no en español, aunque se pueden conseguir algunos tutoriales en español en otros blogs). La instalación no tiene mayor complicación: bajar el instalador, ejecutarlo y darle al botón "Siguiente" hasta el final.

Lo que me gustaría mostrarles aquí son algunos de los usos que yo le he dado a la herramienta, para automatizar tareas en mi trabajo diario. Todos los extractos de código que mostraré aquí, los guardo en un archivo llamado "Inicio.ahk", que incluyo en el menú de inicio, para tenerlos disponibles cada vez que inicie el equipo.

Firma (y otros textos rápidos)

Esta fue el primer uso que le di a la herramienta y es un código bastante sencillo:

::frm::Nombre.-{Enter}http://www.web.com/

Solía tener una firma definida en Outlook, pero no todo lo que firmo lo hago en el Outlook (por ejemplo: foros en internet, correos enviados directamente desde la página de Gmail, etc.). Donde sea que escriba "frm", aparecerá el texto de la firma completo. Escogí "frm" porque me pareció fácil de recordar, y no es algo que normalmente escribiría en algún texto y que se pudiera confundir con otra palabra.

Esto no sólo me ha servido para la firma. Cada vez que me descubro escribiendo un texto varias veces (saludos de correos, encabezados, textos de soporte a usuarios, etc.), incluyo un código como este para crear la sustitución automática. Sólo es cuestión de estar pendiente de las cosas que se hacen repetitivas en las tareas comunes diarias. No me creerían la cantidad de tiempo que me ha ahorrado esta sencilla solución.

Búsquedas en internet

#G::
Send ^c
Run http://www.google.com/search?q=%Clipboard%
Return

Este pequeño código me permite seleccionar una palabra o frase en cualquier lugar, y al presionar la tecla Windows+G, abre el explorador en la página de Google y busca el texto seleccionado.

También se puede hacer una búsqueda en Wikipedia:

#W::
Send ^c
Run http://es.wikipedia.org/wiki/Special:Search?search=%Clipboard%
Return

Para un "infolujurioso" como yo, con docenas de búsquedas diarias en Google y Wikipedia, no es nada despreciable el ahorro de tiempo que me brinda esto.

Esto se puede hacer también fácilmente con la mayoría de los sitios web actuales, sólo hay que averiguar cuál es el URL de búsqueda del sitio web y reemplazarlo en el código anterior.

Ejecutar aplicaciones

Como mencioné antes, ahora uso el Launchy para ejecutar aplicaciones, pero siempre quedan algunas (como estos dos ejemplos) que por algún motivo necesito más rápido de lo que el Launchy me las puede ofrecer.

Hago multitud de anotaciones al día, de todo tipo: cosas por hacer, ideas para desarrollar, notas para el blog, correos pendientes, etc. Solía hacerlo en papel, pero a veces el simple hecho de hacer una anotación me sacaba del ritmo en el que estaba trabajando. Últimamente he estado usando el Notepad para estas anotaciones. Pero esto requiere que esté disponible en todo momento, a una sola tecla de distancia:

#N::Run "%SystemRoot%\system32\notepad.exe"

Esto me permite que en cualquier momento que esté concentrado haciendo algo, y me pase una idea por la cabeza que me parece importante recordar luego, simplemente presiono Windows+N, la escribo, y continuo de inmediato con lo que estaba haciendo, sin romper el ritmo y la concentración. Luego, cuando he terminado con lo que estaba, puedo volver a las anotaciones y decidir qué hacer con ellas una por una, sin interrumpir mi trabajo.

En otros casos es una aplicación que siempre está abierta, o que si no lo está, debería estarlo, como por el ejemplo Outlook:

#1::
IfWinExist, Microsoft Outlook
    WinActivate  
  else
    Run "C:\Archivos de programa\Microsoft Office\OFFICE11\outlook.exe"
return

Al presionar Windows+1, si está abierto el Outlook, me muestra la ventana, y si no, lo ejecuta. Resultado: mi correo, como el Notepad, siempre está a una tecla rápida de distancia.


Estos son los ejemplos más sencillos de cómo uso el AutoHotkey. En próximos artículos les mostraré algunos ejemplos un poco más complejos, para automatizar tareas dentro de aplicaciones, o con combinaciones de aplicaciones, y para construir aplicaciones completas con la ayuda del AutoHotkey.

12 comentarios:

Unknown dijo...

Como lamento que no conozcas el Quicksilver/ MacOSX!

Jesús dijo...

Por lo que he podido ver, yo también lo lamento mucho... por ahora ;-) Pero el Launchy es un muy buen sucedáneao. De hecho todas las cosas que explico aquí se pueden hacer con el Launchy también, así que normalmente uso la primera opción que me venga a la cabeza cuando necesito algo. En los siguientes artículos mostraré algunas otras cosas, más allá de estas sencillas ejecuciones de aplicaciones :-)

Pepe Ramírez dijo...

Gracias Jesús. Estoy tratando de aprender AutoHotKey y tus comentarios me han venido muy bien.

Anónimo dijo...

Hola saves tengo una duda nesecito hacer un ciclo repetitivo pero que lo ejecute con una tecla y lo termine de ejecurat con otra, solo se hacer que el codigo aga que se aprete una tecla repetidas veces pero solo si yo la mantengo precionada o se hacer que aga una secuencia de comandos y click y cosas pero solo si apreto la tecla, luego que hace toda la funcion dentr del if termina, nesecito saver como hacer para que al momento de apretar la tecla f1 precione repetidamente la tecla W pero solo que se detenga cuando yo presione f2 o nuevamente f1 x(, podria sayudarme, espero tu respuesta muchas gracias

Anónimo dijo...

Jesus:

Ando buscando utilidades para automatizar, del tipo de autohotkey o autoit pero que funcionen en Linux. Si sabes de algunas, agradeceré que las cites.

Saludos

Anónimo dijo...

Hola quisiera me ayudaran en esto:

Yo quiero que al presionar una determinada tecla y dejarla presionada, que no se repita la tecla solo hasta soltarla y presionar otra vez, (Pero que solo sea una tecla especifica que no sea para todas las tclas), GRACIAS de antemano, ( donde podre conseguir el tutorial en español de autohotkey)
( Les agradecere si me envian esta respuesta a correodemike@hotmail.com , yo les puedo pasar muchas canciones que deseen tengo 30,000 canciones y muchos karaokes)

xLGTx dijo...

se podria configurar una secuancia de teclas q se repita sucesivamente de forma indefinida con un intervalo de tiempo entre una y otra??

lordbyron dijo...

ANTES QUE NADA FELICIDADES POR EL TUTORIAL.muy bueno la informacion, me podrias ayudar como hacer un scrip el cual aga que en un programa ejecute la teclaa F10 automaticamente a determinado tiempo ejemplo: que se active F10 dentro del programa cada 10minutos. Espero que se pueda y me respondas por favor,me ayudarias en mucho amigo.

Anónimo dijo...

Una consulta, por ejemplo... quiero que la tecla "F5" de mi teclado se presione cada 6 minutos... ¿Cómo lo hago? además para que me funcione como "F5" yo, al menos debo apretar "FIN" + "F5" porque o sino me cambia una canción y no me redirecciona una página por ejemplo... ¿me podrías decir como hacerlo en este caso?

Anónimo dijo...

que tal jesus, un saludo mira siempre me gusto el autojokey pero la verdad le entiendo muy pero muy poco y si lo necesito por que nesecito programar unos ejecutable de mis proyecotos de maquinitas arcade, la verdad me gustaria estudiar el auto por que no se que significan los simbolos y los espacios etc.lo mas que e podido hacer es copiar y pegar para que me corra algo pero de que yo modifique ordene algo jamas, te agradeceria que si tienes algun tutorial, libro, curso no importa de los mas basico mandamelos a mi correo, uacn@icloud.com, si tiene algun costo asmelo saber por el mismo y nos ponemos de acuerdo, gracias, perdon soy Ubaldo

Unknown dijo...

hola queria saber si me podrian ayudar, cree un scribd con autohotkey para que se ponga toda la pantalla negra y lo activo como un exe dos clic y se activa hasta ahi bien ahora lo que yo quiero es que para desactivar o cerrar ese scribd solo tenga que pulsar la tecla Esc
las lineas son las siguentes que tendria que hacer para cerrarlo con esc

; PONEMOS TODA LA PANTALLA EN NEGRO
Gui, +toolwindow
Gui, -Caption
Gui, Color, black
Gui, show, +toolwindow Maximize

espero puedas ayudarme gracias

Unknown dijo...

hola buena macro, yo estoy iniciando en esto de las macros y quisiera hacer una que me muestre el calendario del sistema o la aplicación calendario de w10 te lo agradecería si me ayudaras