Comienzas cada día con las mejores intenciones, rejuvenecido, listo para abordar todas tus tareas. Luego, verifica la hora, son las 03:00 a.m. y no puede evitar preguntarse, ¿a dónde se ha ido todo el tiempo?
Podría usar una aplicación dedicada para el seguimiento del tiempo, pero esas pueden ser molestamente complejas. Además, ¿dónde está la diversión en eso?
¿Por qué no crear su propia mini aplicación simple en su lugar, que podría rastrear todas las ventanas en las que ha pasado tiempo durante el día? Solo necesitará AutoHotKey, un procesador de texto básico como el Bloc de notas, y aproximadamente media hora. Quedémonos atrapados.
¿Qué es AutoHotKey?
El propósito principal de AutoHotKey es la automatización de escritorio. Es un lenguaje de secuencias de comandos con el que puede enviar pulsaciones de teclas y movimientos del mouse a cualquier ventana activa, crear teclas de acceso rápido o modificar pulsaciones de teclas. Puede, por ejemplo, utilizarlo para deshabilitar teclas específicas en su teclado.
Sin embargo, esa es la versión corta de la historia y no es realmente representativa de lo que AutoHotKey (AHK para abreviar) puede hacer. Eso es porque ha evolucionado desde su concepción inicial y ahora es un lenguaje de scripting completo. Puede pensar en lo que puede hacer con él como "programar Lite".
Por lo tanto, también puede usar AHK para crear mini-aplicaciones, precisamente como lo que establecemos como nuestro objetivo para este artículo. Tenga en cuenta que en este artículo nos sumergiremos directamente en AHK, por lo que es posible que desee verificar nuestra guía rápida de AutoHotKey para principiantes antes de empezar.
Creación de su propio script de registro de ventanas con AutoHotKey
Antes de comenzar, debe tener AHK instalado en su computadora, ya que actuará como el "analizador" de su script. Es "el motor" que permitirá que su script "se ejecute".
Nota: También puede compilar su script después de que esté hecho para convertirlo en un programa ejecutable real. Sin embargo, eso está fuera del alcance de este artículo.
Descarga AutoHotKey desde su sitio oficial e instalarlo.
Inicie su administrador de archivos favorito y visite una carpeta donde desea almacenar su script. Luego, haga clic con el botón derecho en un lugar vacío y elija Nuevo> AutoHotKey Script.
Una vez hecho esto, es hora de escribir el guión real.
1. Definir las variables necesarias
Abra el script en su editor favorito. Puede usar algo tan simple como el Bloc de notas que viene con Windows, pero usaremos Bloc de notas ++ para esta guía. Dado que Notepad ++ es gratuito y está mejor diseñado para este propósito, vale la pena probarlo. Asegúrate de comprobar también nuestra guía definitiva sobre todos sus atajos de teclado mientras lo revisas.
Tenga en cuenta que no debe usar ninguna aplicación como Word o Google Docs, que podrían afectar su formato. Utilice un editor de texto o "código".
El script ya contendrá algunos conceptos básicos recomendados para compatibilidad y rendimiento. Déjelos como están y comience su guión debajo de ellos.
Empezar con:
AppLoggingRate = 10; Intervalo de tiempo (en segundos) entre las capturas de títulos de las ventanas activas.
SleepTime: = AppLoggingRate * 1000
Ruta de registro =% A_ScriptDir%
LastActiveWindow =
Comenzamos asignando el valor "10" a AppLoggingRate, que usaremos para calcular el tiempo entre la captura de títulos de ventana.
Cuando se usa con la función Sleep de AHK, 1000 es aproximadamente igual a un segundo. Entonces, al multiplicarlo con AppLogingRate, estamos haciendo que la variable SleepTime sea "igual a diez segundos".
LogPath es la ruta donde queremos almacenar nuestros registros. Estamos usando el valor% A_ScriptDir%, que se traduce como "la carpeta desde donde ejecuta el script". Puede usar la ruta completa a otra carpeta si lo desea.
Finalmente, establecemos LastActiveWindow en blanco. Usaremos esto más adelante para verificar si la ventana activa ha cambiado.
2. Supervisar las ventanas activas
Dado que queremos realizar un seguimiento continuo de qué ventana está activa, y si cambia, registrar su título y hora, tendremos que usar "un bucle".
Como su nombre lo indica, un bucle se ejecuta continuamente, repitiendo las mismas funciones. Gracias a la sintaxis sencilla de AHK, creemos que el siguiente "código" es relativamente autoexplicativo:
Círculo
{
Sleep% SleepTime%
Msgbox, ¡Funciona!
}
Definimos un bucle simplemente escribiendo la palabra "bucle" y luego marcando su comienzo con "{" y terminando con "}". Todo en las líneas entre "{" y "}" se ejecutará perpetuamente hasta que salga del script.
Comenzamos el ciclo esperando (Sleep) por una cantidad de tiempo igual a la variable SleepTime. Lo configuramos como una variable en el capítulo anterior para que el control del tiempo sea más sencillo. En lugar de editar el script en sí, puede "decirle", a través de esta variable, cuántos segundos debe durar cada bucle.
Finalmente, usamos un cuadro de mensaje para probar nuestro script. Intente guardarlo y ejecutarlo (haga doble clic en su archivo). Verá un cuadro de mensaje que dice "¡Funciona!" después de diez segundos.
Haga clic con el botón derecho en el icono de AHK en la bandeja de Windows y salga del script cuando haya tenido suficientes cuadros de mensaje. Luego, regrese a su editor y reemplace la línea MsgBox con:
WinGetActiveTitle, ActiveWindow
Este es el comando para obtener el título de la ventana activa. Ignore la línea adicional "StoreActiveWindow", que usamos al escribir el script para la prueba.
3. Obtenga la hora y el nombre actuales
Ahora viene la parte central de la lógica del guión. Queremos que compare el nombre de la ventana activa con el anterior y, si son diferentes, "haga algo". Es tan simple como lo siguiente:
Si ActiveWindow! =% LastActiveWindow%
{
}
Con lo anterior, verificamos si la ActiveWindow actual es diferente (! =) Al valor almacenado en la variable LastActiveWindow (que inicialmente establecimos en blanco). Si es así, AHK ejecutará el código entre {y}, que por ahora están vacíos.
Necesitamos realizar un seguimiento de la fecha y la hora para medir cuánto tiempo ha estado activa una ventana. Mantendremos diferentes registros para cada día, usando la fecha en su nombre. Y queremos registrar no solo todos los cambios de ventana, sino también cuando sucedió. Para eso, asignaremos diferentes formatos de tiempo a las variables LogTime y LogFilename, con:
FormatTime, LogTime, HH: mm: ss
FormatTime, LogFilename,, aaaa-MMM-dd
Agregue esas líneas entre las llaves bajo "If ActiveWindow ...", para que AHK las ejecute cuando detecte un cambio de ventana.
4. Formateo de datos
Hemos tomado el tiempo en dos variables con formato diferente, así como en el título de la ventana activa. Sin embargo, hay un pequeño problema: el título de una ventana también puede contener caracteres que no queremos. Podemos eliminar todos los caracteres no alfanuméricos utilizando el soporte de AHK para RegEx, con:
Ventana de registro: = Regexreplace (ActiveWindow, "[^ a-zA-Z0-9]", "")
Con esto, le "decimos" a AHK que elimine todos los caracteres de la variable ActiveWindow que no coincidan con lo que está entre paréntesis:
- Letras minusculas
- Letras mayúsculas
- Números
Luego, asignamos el resultado a la variable LogWindow.
Con todas las variables configuradas y todos los datos valiosos capturados, estamos listos para formatear nuestro archivo de registro y su contenido.
LogFilename =% LogFilename% _AppLog.md
LogFile =% LogPath% \% LogFilename%
Anteriormente asignamos la fecha actual a la variable LogFilename. Por lo tanto, con la primera línea, simplemente estamos indicando que queremos agregar "_AppLog.md" a la fecha para usarlo como nombre de archivo.
En la segunda línea, combinamos la variable LogPath, que definimos al principio como el destino de nuestros registros, con el nombre del archivo. Su combinación es la ruta completa del registro, asignada a la variable LogFile.
Asignemos el equivalente de "línea vacía, Tiempo - Nombre de la ventana, dos líneas vacías más, un divisor y otra línea vacía, por si acaso" a la variable FileContent.
FileContent = `n% LogTime% -% LogWindow%` n`n- - -`n
- La "n" le dice a AHK que ingrese una nueva línea (el equivalente a presionar Enter una vez).
- Los tres guiones aparecerán como un divisor cuando se presenten en un visor compatible con rebajas.
- "% LogTime%" y "% LogWindow%" son las variables donde hemos almacenado el nombre de la ventana activa y la hora en que se detectó.
5. Actualizar el archivo
Hemos definido lo que queremos escribir en nuestro archivo y conocemos su ruta y nombre de archivo. Todo lo que queda es la escritura real, que es tan fácil como:
FileAppend,% FileContent%,% LogFile%
Es casi tan sencillo como el inglés simple: agregamos todo en la variable "FileContent" al archivo "LogFile".
La función "agregar" agregará el "FileContent" al archivo si existe, pero también lo creará desde cero si no existe.
Pero espere, hay un último ajuste: reemplazar el contenido de la variable LastActiveWindow con la ventana actualmente activa.
Con esto, el script podrá detectar el Siguiente cambio de ventana.
LastActiveWindow =% ActiveWindow%
Y con esa última adición, ¡su registrador de ventanas está listo! Guárdelo y ejecútelo. Luego, revise el archivo de rebajas, que aparecerá en la carpeta de su archivo de script después de diez segundos.
Domina tu tiempo
Puede abrir su archivo de registro con cualquier editor de texto. Aún así, se verá más bonito si lo abre en un editor compatible con Markdown. En la captura de pantalla, puede ver nuestro registro en el popular editor de Typora.
Es una manera fácil de verificar qué aplicaciones ha pasado más tiempo, y solo necesita algo como el Bloc de notas para usarlo.
Si desea algo "más", siempre puede "diseñar" la salida de su registrador para producir archivos CSV en su lugar. Es tan fácil como ajustar la variable FileContent y la extensión del archivo creado. Luego, puede importar dichos archivos a aplicaciones como Excel, Google Calc o incluso rastreadores de tiempo de terceros.
Guión completo:
#NoEnv; Recomendado por rendimiento y compatibilidad con futuras versiones de AutoHotkey.
; #Advertir; Habilite las advertencias para ayudar a detectar errores comunes.
Entrada SendMode; Recomendado para nuevos scripts debido a su velocidad y confiabilidad superiores.
SetWorkingDir% A_ScriptDir%; Asegura un directorio de inicio consistente.
; Variables
;
AppLoggingRate = 10; Intervalo de tiempo (en segundos) entre las capturas de títulos de las ventanas activas.
SleepTime: = AppLoggingRate * 1000
Ruta de registro =% A_ScriptDir%
LastActiveWindow =
; Lógica
;
Círculo
{
Sleep% SleepTime%
WinGetActiveTitle, ActiveWindow
StoreActiveWindow =% ActiveWindow%
Si ActiveWindow! =% LastActiveWindow%
{
FormatTime, LogTime, HH: mm: ss
FormatTime, LogFilename,, aaaa-MM-dd
Ventana de registro: = Regexreplace (ActiveWindow, "[^ a-zA-Z0-9]", "")
LogFilename =% LogFilename% _AppLog.md
LogFile =% LogPath% \% LogFilename%
FileContent = `n% LogTime% -% LogWindow%` n`n- - -`n
dormir 50
FileAppend,% FileContent%,% LogFile%
LastActiveWindow =% ActiveWindow%
}
}
Salida
AutoHotkey te permite crear accesos directos de Windows personalizados, macros y más. Aquí hay algunos scripts útiles de AutoHotkey para comenzar.
Leer siguiente
- Ventanas
- Productividad
- Ventanas
- AutoHotkey
- Gestión del tiempo
- Trucos de productividad

La vida real de OK comenzó alrededor de las 10, cuando consiguió su primera computadora, una Commodore 128. Desde entonces, ha estado derritiendo teclas escribiendo las 24 horas del día, los 7 días de la semana, tratando de difundir The Word Of Tech a cualquiera que esté lo suficientemente interesado como para escucharlo. O mejor dicho, leer.
Suscríbete a nuestro boletín
¡Únase a nuestro boletín de noticias para obtener consejos técnicos, reseñas, libros electrónicos gratuitos y ofertas exclusivas!
Haga clic aquí para suscribirse