Každý deň začínate s tými najlepšími úmyslami, omladení, pripravení zvládnuť všetky svoje úlohy. Potom skontrolujete čas, je 03:00 a nemôžete sa čudovať, kam sa podel ten čas?

Môžete použiť vyhradenú aplikáciu na sledovanie času, ale tie môžu byť nepríjemne zložité. Navyše, kde je v tom zábava?

Prečo si namiesto toho nevytvoriť vlastnú jednoduchú miniaplikáciu, ktorá by mohla sledovať všetky okná, na ktorých ste počas dňa strávili čas? Budete potrebovať iba AutoHotKey, základný textový procesor, ako je Poznámkový blok, a približne pol hodinu. Poďme sa zaseknúť.

Čo je AutoHotKey?

Primárnym účelom AutoHotKey je automatizácia pracovnej plochy. Je to skriptovací jazyk, pomocou ktorého môžete posielať stlačenia klávesov a pohyby myši do akéhokoľvek aktívneho okna, vytvárať klávesové skratky alebo upravovať stlačenia klávesov. Môžete ho použiť napr zakázať konkrétne klávesy na klávesnici.

Toto je však krátka verzia príbehu a nie je skutočne reprezentatívna pre to, čo AutoHotKey (skrátene AHK) dokáže. Je to preto, že sa od svojej počiatočnej koncepcie vyvinul a teraz je úplným skriptovacím jazykom. Čo s tým môžete robiť, si môžete predstaviť ako „programovanie Lite“.

instagram viewer

AHK teda môžete použiť aj na vytváranie miniaplikácií, presne tak, ako sme si stanovili za cieľ v tomto článku. Všimnite si, že v tomto článku sa ponoríme priamo do AHK, takže možno budete chcieť skontrolovať náš rýchly sprievodca AutoHotKey pre začiatočníkov než začnete.

Vytvorenie vlastného skriptu na zaznamenávanie okien pomocou funkcie AutoHotKey

Skôr ako začneme, mali by ste mať na svojom počítači nainštalovaný AHK, pretože bude fungovať ako „analyzátor“ pre váš skript. Je to „motor“, ktorý umožní vášmu skriptu „bežať“.

Poznámka: Svoj skript môžete skompilovať aj po jeho dokončení, aby ste z neho urobili skutočný spustiteľný program. To je však mimo rámca tohto článku.

Stiahnite si AutoHotKey z jeho oficiálnej stránky a nainštalujte ho.

Spustite svojho obľúbeného správcu súborov a navštívte priečinok, do ktorého chcete uložiť skript. Potom kliknite pravým tlačidlom myši na prázdne miesto a vyberte si Nové > AutoHotKey Script.

Akonáhle je to hotové, je čas napísať skutočný scenár.

1. Definujte potrebné premenné

Otvorte skript vo svojom obľúbenom editore. Môžete použiť niečo také jednoduché, ako je Poznámkový blok, ktorý sa dodáva so systémom Windows, ale my ho budeme používať Poznámkový blok++ pre túto príručku. Keďže Notepad++ je zadarmo a lepšie prispôsobený tomuto účelu, oplatí sa ho vyskúšať. Nezabudnite tiež skontrolovať náš konečný sprievodca všetkými jeho klávesovými skratkami kým si to overíte.

Upozorňujeme, že by ste nemali používať žiadnu aplikáciu, ako je Word alebo Dokumenty Google, čo by mohlo ovplyvniť ich formátovanie. Použite buď textový editor alebo editor „kódu“.

Skript už bude obsahovať niektoré základy odporúčané pre kompatibilitu a výkon. Nechajte ich tak, ako sú, a spustite skript pod nimi.

Začnite s:

AppLoggingRate = 10; Časový interval (v sekundách) medzi zachytením aktívneho nadpisu okna.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =

Začneme priradením hodnoty „10“ AppLoggingRate, ktorú použijeme na výpočet času medzi zachytením nadpisov okien.

Pri použití s ​​funkciou spánku AHK sa 1000 rovná približne sekunde. Takže vynásobením AppLogingRate získame premennú SleepTime „rovnajúcu sa desiatim sekundám“.

LogPath je cesta, kam chceme ukladať naše protokoly. Používame hodnotu %A_ScriptDir%, čo znamená „priečinok, z ktorého spúšťate skript“. Ak chcete, môžete použiť úplnú cestu k inému priečinku.

Nakoniec nastavíme LastActiveWindow na prázdne. Toto neskôr použijeme na kontrolu, či sa aktívne okno zmenilo.

2. Monitorujte aktívne Windows

Keďže chceme neustále sledovať, ktoré okno je aktívne, a ak sa zmení, zaprotokolovať jeho názov a čas, budeme musieť použiť „cyklus“.

Ako už názov napovedá, slučka beží nepretržite a opakuje rovnakú funkciu (funkcie). Vďaka priamej syntaxi AHK veríme, že nasledujúci „kód“ je pomerne samozrejmý:

Slučka
{
Spánok %SleepTime%
Msgbox, funguje to!
}

Slučku definujeme jednoduchým napísaním slova "loop" a následným označením jej začiatku znakom "{" a konca "}". Všetko v riadkoch medzi "{" a "}" bude bežať nepretržite, kým neukončíte skript.

Slučku začneme čakaním (Sleep) po dobu rovnajúcu sa premennej SleepTime. Nastavili sme ju ako premennú v predchádzajúcej kapitole, aby bolo ovládanie času jednoduchšie. Namiesto úpravy samotného skriptu mu môžete prostredníctvom tejto premennej „povedať“, koľko sekúnd má každá slučka trvať.

Nakoniec použijeme Message Box na testovanie nášho skriptu. Skúste ho uložiť a spustiť (dvakrát kliknite na jeho súbor). Zobrazí sa okno so správou „Funguje to!“ po desiatich sekundách.

Kliknite pravým tlačidlom myši na ikonu AHK na paneli Windows a ukončite skript, keď budete mať dostatok správ. Potom sa vráťte do editora a nahraďte riadok MsgBox:

WinGetActiveTitle, ActiveWindow

Toto je príkaz na získanie názvu aktívneho okna. Ignorujte extra riadok „StoreActiveWindow“, ktorý sme použili pri písaní skriptu na testovanie.

3. Získajte aktuálny čas a meno

Teraz prichádza hlavná časť logiky scenára. Chceme, aby porovnalo názov aktívneho okna s predchádzajúcim, a ak sú odlišné, „urobte niečo“. Je to také jednoduché, ako je uvedené nižšie:

Ak ActiveWindow != %LastActiveWindow%
{
}

Pomocou vyššie uvedeného skontrolujeme, či sa aktuálne aktívne okno líši (!=) od hodnoty uloženej v premennej LastActiveWindow (ktorú sme pôvodne nastavili ako prázdnu). Ak áno, AHK spustí kód medzi { a }, ktoré sú zatiaľ prázdne.

Musíme sledovať dátum aj čas, aby sme mohli merať, ako dlho bolo okno aktívne. Pre každý deň budeme uchovávať rôzne záznamy, pričom v ich názve použijeme dátum. A chceme zaprotokolovať nielen každú zmenu okna, ale aj kedy stalo sa. Na tento účel priradíme premenným LogTime a LogFilename rôzne časové formáty s:

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

Pridajte tieto riadky medzi zložené zátvorky pod "If ActiveWindow...", aby ich AHK spustilo, keď zistí zmenu okna.

4. Formátovanie údajov

Čas sme zachytili v dvoch rozdielne formátovaných premenných, ako aj názov aktívneho okna. Je tu však malý problém: názov okna môže obsahovať aj znaky, ktoré nechceme. Pomocou podpory RegEx od AHK môžeme odstrániť všetky nealfanumerické znaky pomocou:

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

Týmto „povieme“ AHK, aby odstránila všetky znaky z premennej ActiveWindow, ktoré sa nezhodujú s tým, čo je v zátvorkách:

  • Malé písmená
  • Veľké písmená
  • čísla

Potom výsledok priradíme do premennej LogWindow.

Po nastavení všetkých premenných a získaní všetkých cenných údajov sme pripravení naformátovať súbor denníka a jeho obsah.

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

Aktuálny dátum sme predtým priradili premennej LogFilename. Prvým riadkom teda iba uvádzame, že chceme pridať „_AppLog.md“ k dátumu, aby sme ho mohli použiť ako názov súboru.

V druhom riadku spojíme premennú LogPath, ktorú sme na začiatku definovali ako cieľ pre naše logy, s názvom súboru. Ich kombináciou je úplná cesta k protokolu priradená k premennej LogFile.

Premennej FileContent priraďme ekvivalent „prázdny riadok, čas – názov okna, ďalšie dva prázdne riadky, oddeľovač a ďalší prázdny riadok“.

FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
  • Písmeno „n“ hovorí AHK, aby vložilo nový riadok (ekvivalent jedného stlačenia klávesu Enter).
  • Pri zobrazení v prehliadači kompatibilnom s markdown sa tri pomlčky zobrazia ako oddeľovač.
  • "%LogTime%" a "%LogWindow%" sú premenné, do ktorých sme uložili názov aktívneho okna a čas jeho zistenia.

5. Aktualizujte súbor

Definovali sme, čo chceme zapísať do nášho súboru, a poznáme jeho cestu a názov súboru. Zostáva len skutočné písanie, ktoré je také jednoduché ako:

FileAppend, %FileContent%, %LogFile%

Je to takmer také jednoduché ako obyčajná angličtina: všetko v premennej „FileContent“ pripojíme k súboru „LogFile“.

Funkcia „append“ pridá „FileContent“ do súboru, ak existuje, ale tiež ho vytvorí od začiatku, ak neexistuje.

Ale počkajte, je tu ešte jedna posledná úprava: nahradenie obsahu premennej LastActiveWindow aktuálne aktívnym oknom.

Vďaka tomu bude skript schopný zistiť Ďalšie zmena okna.

LastActiveWindow = %ActiveWindow%

A s týmto posledným prírastkom je váš záznamník okien pripravený! Uložte ho a spustite. Potom skontrolujte súbor markdown, ktorý sa po desiatich sekundách zobrazí v priečinku vášho súboru skriptu.

Majte svoj čas

Súbor denníka môžete otvoriť pomocou ľubovoľného textového editora. Napriek tomu bude vyzerať krajšie, ak ho otvoríte v editore kompatibilnom s markdown. Na snímke obrazovky môžete vidieť náš denník v populárnom editore Typora.

Je to jednoduchý spôsob, ako skontrolovať, v ktorých aplikáciách ste strávili najviac času a na používanie vám stačí niečo ako Poznámkový blok.

Ak by ste chceli niečo „viac“, vždy môžete „naštýlovať“ výstup vášho zapisovača tak, aby namiesto toho vytváral súbory CSV. Je to také jednoduché, ako upraviť premennú FileContent a príponu vytvoreného súboru. Takéto súbory by ste potom mohli importovať do aplikácií, ako sú Excel, Google Calc alebo dokonca nástroje na sledovanie času tretích strán.

Celý skript:

#NoEnv; Odporúča sa pre výkon a kompatibilitu s budúcimi vydaniami AutoHotkey.
; #Upozorniť; Povoľte upozornenia na pomoc pri zisťovaní bežných chýb.
SendMode Input; Odporúča sa pre nové skripty vďaka svojej vynikajúcej rýchlosti a spoľahlivosti.
SetWorkingDir %A_ScriptDir%; Zabezpečuje konzistentný štartovací adresár.
; Premenné
;
AppLoggingRate = 10; Časový interval (v sekundách) medzi zachytením aktívneho nadpisu okna.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
; Logika
;
Slučka
{
Spánok %SleepTime%
WinGetActiveTitle, ActiveWindow
StoreActiveWindow = %ActiveWindow%
Ak 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
spať 50
FileAppend, %FileContent%, %LogFile%
LastActiveWindow = %ActiveWindow%
}
}
Východ
10 skvelých skriptov AutoHotkey (a ako si vytvoriť svoj vlastný!)

AutoHotkey vám umožňuje vytvárať vlastné skratky Windows, makrá a ďalšie! Tu je niekoľko užitočných skriptov AutoHotkey, ktoré vám pomôžu začať.

Prečítajte si ďalej

zdieľamTweetujteEmail
Súvisiace témy
  • Windows
  • Produktivita
  • Windows
  • AutoHotkey
  • Time Management
  • Triky s produktivitou
O autorovi
Odysseas Kourafalos (12 publikovaných článkov)

OKov skutočný život začal okolo 10, keď dostal svoj prvý počítač – Commodore 128. Odvtedy rozpúšťal klávesové skratky písaním 24 hodín denne, 7 dní v týždni a snažil sa šíriť The Word Of Tech každému, koho to zaujalo natoľko, aby ho počúval. Alebo skôr čítať.

Viac od Odysseasa Kourafalosa

prihlásiť sa ku odberu noviniek

Pripojte sa k nášmu bulletinu a získajte technické tipy, recenzie, bezplatné e-knihy a exkluzívne ponuky!

Kliknutím sem sa prihlásite na odber