Každý den začínáte s těmi nejlepšími úmysly, omlazeni, připraveni pustit se do všech svých úkolů. Pak zkontrolujete čas, je 03:00 a nestačíte se divit, kam se ten čas poděl?

Můžete použít speciální aplikaci pro sledování času, ale ty mohou být nepříjemně složité. Navíc, kde je v tom zábava?

Proč si místo toho nevytvořit vlastní jednoduchou miniaplikaci, která by mohla sledovat všechna okna, na kterých jste během dne strávili čas? Budete potřebovat pouze AutoHotKey, základní textový procesor, jako je Poznámkový blok, a asi půl hodiny. Pojďme se zaseknout.

Co je AutoHotKey?

Primárním účelem AutoHotKey je automatizace desktopů. Je to skriptovací jazyk, pomocí kterého můžete posílat úhozy a pohyby myši do libovolného aktivního okna, vytvářet klávesové zkratky nebo upravovat stisky kláves. Můžete jej použít např zakázat konkrétní klávesy na klávesnici.

To je však zkrácená verze příběhu a není to skutečný příklad toho, co AutoHotKey (zkráceně AHK) dokáže. Je to proto, že se od svého počátečního pojetí vyvinul a nyní je kompletním skriptovacím jazykem. Můžete si představit, co s tím můžete dělat, jako "programování Lite."

instagram viewer

AHK tedy můžete také použít k vytváření miniaplikací, přesně jako to, co jsme si stanovili jako cíl pro tento článek. Všimněte si, že v tomto článku se ponoříme přímo do AHK, takže možná budete chtít zkontrolovat náš rychlý průvodce AutoHotKey pro začátečníky než začnete.

Vytvoření vlastního skriptu pro protokolování oken pomocí AutoHotKey

Než začneme, měli byste mít na svém počítači nainstalovaný AHK, protože bude fungovat jako „analyzátor“ vašeho skriptu. Je to „motor“, který umožní vašemu skriptu „spustit“.

Poznámka: Skript můžete také zkompilovat poté, co je hotový, a přeměnit jej ve skutečný spustitelný program. To je však mimo rámec tohoto článku.

Stáhněte si AutoHotKey z jeho oficiálních stránek a nainstalujte jej.

Spusťte svého oblíbeného správce souborů a navštivte složku, kam chcete skript uložit. Poté klikněte pravým tlačítkem na prázdné místo a vyberte Novinka > AutoHotKey Script.

Jakmile je hotovo, je čas napsat skutečný scénář.

1. Definujte nezbytné proměnné

Otevřete skript ve svém oblíbeném editoru. Můžete použít něco tak jednoduchého, jako je Poznámkový blok, který je součástí systému Windows, ale my ho budeme používat Poznámkový blok++ pro tento návod. Vzhledem k tomu, že Notepad++ je zdarma a lépe přizpůsobený pro tento účel, stojí za to jej vyzkoušet. Nezapomeňte také zkontrolovat náš konečný průvodce všemi jeho klávesovými zkratkami zatímco to kontrolujete.

Pamatujte, že byste neměli používat žádnou aplikaci, jako je Word nebo Dokumenty Google, které by mohly ovlivnit jejich formátování. Použijte buď textový, nebo "kódový" editor.

Skript již bude obsahovat některé základy doporučené pro kompatibilitu a výkon. Nechte je tak, jak jsou, a spusťte skript pod nimi.

Začít s:

AppLoggingRate = 10; Časový interval (v sekundách) mezi zachycením názvu aktivního okna.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =

Začneme přiřazením hodnoty „10“ AppLoggingRate, kterou použijeme k výpočtu doby mezi zachycením nadpisů oken.

Při použití s ​​funkcí spánku AHK je 1000 zhruba rovna sekundě. Takže vynásobením pomocí AppLogingRate získáme proměnnou SleepTime „rovnou deseti sekundám“.

LogPath je cesta, kam chceme ukládat naše protokoly. Používáme hodnotu %A_ScriptDir%, což znamená „složka, ze které spouštíte skript“. Pokud chcete, můžete použít úplnou cestu k jiné složce.

Nakonec nastavíme LastActiveWindow na prázdné. Později to použijeme ke kontrole, zda se aktivní okno změnilo.

2. Sledujte aktivní Windows

Protože chceme neustále sledovat, které okno je aktivní, a pokud se změní, zaprotokolovat jeho název a čas, budeme muset použít „smyčku“.

Jak již název napovídá, smyčka běží nepřetržitě a opakuje stejnou funkci (funkce). Díky přímočaré syntaxi AHK věříme, že následující „kód“ je relativně samozřejmý:

Smyčka
{
Spánek %SleepTime%
Msgbox, funguje to!
}

Smyčku definujeme tak, že jednoduše napíšeme slovo "loop" a označíme její začátek "{" a konec "}". Vše v řádcích mezi "{" a "}" bude běžet nepřetržitě, dokud skript neukončíte.

Smyčku zahájíme čekáním (Sleep) po dobu rovnající se proměnné SleepTime. Nastavili jsme ji jako proměnnou v předchozí kapitole, aby bylo ovládání času jednodušší. Namísto úpravy samotného skriptu mu můžete prostřednictvím této proměnné „sdělit“, kolik sekund má každá smyčka trvat.

Nakonec použijeme Message Box k testování našeho skriptu. Zkuste jej uložit a spustit (dvojitě klikněte na jeho soubor). Zobrazí se okno se zprávou „Funguje to!“ po deseti sekundách.

Klikněte pravým tlačítkem na ikonu AHK na liště Windows a ukončete skript, až budete mít dostatek zpráv. Poté se vraťte do svého editoru a nahraďte řádek MsgBox takto:

WinGetActiveTitle, ActiveWindow

Toto je příkaz pro získání názvu aktivního okna. Ignorujte další řádek „StoreActiveWindow“, který jsme použili při psaní skriptu pro testování.

3. Získejte aktuální čas a jméno

Nyní přichází hlavní část logiky scénáře. Chceme, aby porovnal název aktivního okna s předchozím, a pokud se liší, "něco udělat". Je to stejně jednoduché jako následující:

If ActiveWindow != %LastActiveWindow%
{
}

Pomocí výše uvedeného zkontrolujeme, zda se aktuálně ActiveWindow liší (!=) od hodnoty uložené v proměnné LastActiveWindow (kterou jsme původně nastavili jako prázdnou). Pokud ano, AHK spustí kód mezi { a }, které jsou prozatím prázdné.

Abychom změřili, jak dlouho bylo okno aktivní, potřebujeme sledovat jak datum, tak čas. Pro každý den budeme uchovávat různé záznamy s použitím data v jejich názvu. A chceme zaznamenávat nejen každou změnu okna, ale také když se to stalo. Za tímto účelem přiřadíme různé časové formáty proměnným LogTime a LogFilename s:

FormatTime, LogTime,, HH: mm: ss
FormatTime, LogFilename,, yyyy-MMM-dd

Přidejte tyto řádky mezi složené závorky pod "If ActiveWindow...", aby je AHK spustil, když zjistí změnu okna.

4. Formátování dat

Zachytili jsme čas ve dvou různě formátovaných proměnných a také název aktivního okna. Je tu však malý problém: název okna může také obsahovat znaky, které nechceme. Můžeme odstranit všechny nealfanumerické znaky pomocí podpory AHK pro RegEx, s:

LogWindow := Regexreplace (ActiveWindow, "[^a-zA-Z0-9]", " ")

Tímto „řekneme“ AHK, aby odstranila všechny znaky z proměnné ActiveWindow, které neodpovídají tomu, co je v závorkách:

  • Malá písmena
  • Velká písmena
  • čísla

Výsledek pak přiřadíme do proměnné LogWindow.

Se všemi nastavenými proměnnými a sebranými cennými daty jsme připraveni naformátovat náš soubor protokolu a jeho obsah.

LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%

Dříve jsme přiřadili aktuální datum proměnné LogFilename. Na prvním řádku tedy pouze říkáme, že chceme k datu přidat „_AppLog.md“, abychom jej mohli použít jako název souboru.

Ve druhém řádku zkombinujeme proměnnou LogPath, kterou jsme na začátku definovali jako cíl pro naše logy, s názvem souboru. Jejich kombinací je úplná cesta k protokolu přiřazená k proměnné LogFile.

Proměnnou FileContent přiřaďme ekvivalent „prázdný řádek, čas – název okna, další dva prázdné řádky, oddělovač a další prázdný řádek“.

FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
  • Písmeno "n" říká AHK, aby vložilo nový řádek (ekvivalent jednoho stisknutí klávesy Enter).
  • Při zobrazení v prohlížeči kompatibilním s markdown se tyto tři pomlčky zobrazí jako oddělovač.
  • "%LogTime%" a "%LogWindow%" jsou proměnné, do kterých jsme uložili název aktivního okna a čas, kdy bylo zjištěno.

5. Aktualizujte soubor

Definovali jsme, co chceme do našeho souboru zapsat, a známe jeho cestu a název souboru. Zbývá pouze skutečné psaní, které je stejně snadné jako:

FileAppend, %FileContent%, %LogFile%

Je to téměř tak přímočaré jako obyčejná angličtina: vše v proměnné „FileContent“ připojíme k souboru „LogFile“.

Funkce "připojit" přidá "FileContent" k souboru, pokud existuje, ale také jej vytvoří od začátku, pokud neexistuje.

Ale počkejte, je tu ještě jedna poslední úprava: nahrazení obsahu proměnné LastActiveWindow aktuálně aktivním oknem.

Díky tomu bude skript schopen detekovat další změna okna.

LastActiveWindow = %ActiveWindow%

A s tímto posledním přídavkem je váš okenní logger připraven! Uložte to a spusťte. Poté se podívejte na soubor markdown, který se po deseti sekundách objeví ve složce vašeho souboru skriptu.

Ovládněte svůj čas

Soubor protokolu můžete otevřít v libovolném textovém editoru. Přesto bude vypadat hezčí, pokud jej otevřete v editoru kompatibilním s markdown. Na snímku obrazovky můžete vidět náš log v oblíbeném editoru Typora.

Je to snadný způsob, jak zkontrolovat, ve kterých aplikacích jste strávili nejvíce času, a potřebujete k tomu pouze něco jako Poznámkový blok.

Pokud byste chtěli něco „více“, můžete vždy „nastylovat“ výstup svého loggeru tak, aby místo toho produkoval soubory CSV. Je to stejně snadné jako vyladění proměnné FileContent a přípony vytvořeného souboru. Tyto soubory pak můžete importovat do aplikací, jako je Excel, Google Calc nebo dokonce sledovače času třetích stran.

Celý skript:

#NoEnv; Doporučeno pro výkon a kompatibilitu s budoucími verzemi AutoHotkey.
; #Varovat; Povolte varování, která vám pomohou s odhalováním běžných chyb.
Vstup SendMode; Doporučeno pro nové skripty kvůli jeho vynikající rychlosti a spolehlivosti.
SetWorkingDir %A_ScriptDir%; Zajišťuje konzistentní počáteční adresář.
; Proměnné
;
AppLoggingRate = 10; Časový interval (v sekundách) mezi zachycením názvu aktivního okna.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
; Logika
;
Smyčka
{
Spánek %SleepTime%
WinGetActiveTitle, ActiveWindow
StoreActiveWindow = %ActiveWindow%
If ActiveWindow != %LastActiveWindow%
{
FormatTime, LogTime,, HH: mm: ss
FormatTime, LogFilename,, yyyy-MM-dd
LogWindow := Regexreplace (ActiveWindow, "[^a-zA-Z0-9]", " ")
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
spát 50
FileAppend, %FileContent%, %LogFile%
LastActiveWindow = %ActiveWindow%
}
}
Výstup
10 skvělých AutoHotkey skriptů (a jak si vytvořit svůj vlastní!)

AutoHotkey vám umožňuje vytvářet vlastní zkratky Windows, makra a další! Zde je několik užitečných skriptů AutoHotkey, které vám pomohou začít.

Přečtěte si další

PodíltweetE-mailem
Související témata
  • Okna
  • Produktivita
  • Okna
  • AutoHotkey
  • Organizace času
  • Produktivní triky
O autorovi
Odysseas Kourafalos (12 zveřejněných článků)

OKův skutečný život začal kolem 10, kdy dostal svůj první počítač – Commodore 128. Od té doby tavil klávesové zkratky psaním 24 hodin denně 7 dní v týdnu a snažil se šířit The Word Of Tech každému, kdo má zájem naslouchat. Nebo spíš číst.

Více od Odysseas Kourafalos

Přihlaste se k odběru našeho newsletteru

Připojte se k našemu zpravodaji a získejte technické tipy, recenze, bezplatné e-knihy a exkluzivní nabídky!

Chcete-li se přihlásit k odběru, klikněte sem