Aloitat jokaisen päivän parhailla aikomuksilla, nuorena, valmiina hoitamaan kaikki tehtäväsi. Sitten tarkistat kellon, kello on 03:00, etkä voi olla ihmettelemättä, mihin kaikki aika on kadonnut?
Voit käyttää erityistä ajanseurantasovellusta, mutta ne voivat olla ärsyttävän monimutkaisia. Lisäksi missä siinä on hauskuus?
Mikset tekisi sen sijaan omaa yksinkertaista minisovellusta, joka voi seurata kaikkia ikkunoita, joissa olet viettänyt aikaa päivän aikana? Tarvitset vain AutoHotKeyn, perustekstinkäsittelyohjelman, kuten Notepadin, ja noin puoli tuntia. Jäädään jumiin.
Mikä on AutoHotKey?
AutoHotKeyn ensisijainen tarkoitus on työpöytäautomaatio. Se on komentosarjakieli, jolla voit lähettää näppäinpainalluksia ja hiiren liikkeitä mihin tahansa aktiiviseen ikkunaan, luoda pikanäppäimiä tai muokata näppäinpainalluksia. Voit käyttää sitä esim poistaa käytöstä tietyt näppäimistön näppäimet.
Tämä on kuitenkin tarinan lyhyt versio, eikä se todellakaan edusta sitä, mitä AutoHotKey (lyhyesti AHK) voi tehdä. Tämä johtuu siitä, että se on kehittynyt alkuperäisestä suunnittelustaan ja nyt se on täydellinen skriptikieli. Voit ajatella, mitä voit tehdä sillä "ohjelmointi Lite".
Näin ollen voit myös käyttää AHK: ta pienoissovellusten luomiseen, juuri kuten asetimme tavoitteeksemme tälle artikkelille. Huomaa, että tässä artikkelissa sukeltamme suoraan AHK: hen, joten sinun kannattaa tarkistaa nopea AutoHotKey-opas aloittelijoille ennen kuin aloitat.
Oman ikkunalokiohjelman luominen AutoHotKeyllä
Ennen kuin aloitamme, sinun pitäisi olla AHK asennettuna tietokoneellesi, koska se toimii komentosarjasi "jäsentimenä". Se on "moottori", joka sallii skriptisi "ajoa".
Huomautus: Voit myös kääntää komentosarjan sen jälkeen, kun se on valmis ja muuntaa siitä varsinainen suoritettava ohjelma. Se ei kuitenkaan kuulu tämän artikkelin soveltamisalaan.
Lataa AutoHotKey sen viralliselta sivustolta ja asenna se.
Käynnistä suosikkitiedostojen hallintasi ja siirry kansioon, johon haluat tallentaa komentosarjasi. Napsauta sitten hiiren kakkospainikkeella tyhjää kohtaa ja valitse Uusi > AutoHotKey Script.
Kun se on tehty, on aika kirjoittaa varsinainen käsikirjoitus.
1. Määrittele tarvittavat muuttujat
Avaa skripti suosikkieditorissasi. Voit käyttää jotain niin yksinkertaista kuin Windowsin mukana tulevaa Notepadia, mutta me käytämme sitä Muistio++ tätä ohjetta varten. Koska Notepad++ on ilmainen ja paremmin räätälöity tähän tarkoitukseen, sitä kannattaa kokeilla. Muista myös tarkistaa lopullinen oppaamme kaikista sen pikanäppäimistä kun tarkistat sen.
Huomaa, että sinun ei pitäisi käyttää mitään sovellusta, kuten Wordia tai Google-dokumentteja, jotka voivat vaikuttaa sen muotoiluun. Käytä joko teksti- tai "koodieditoria".
Skripti sisältää jo joitain perustietoja, joita suositellaan yhteensopivuuden ja suorituskyvyn kannalta. Jätä ne sellaisina kuin ne ovat ja aloita käsikirjoitus niiden alla.
Aloita:
AppLoggingRate = 10; Aikaväli (sekunteina) aktiivisten ikkunan otsikon kaappausten välillä.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
Aloitamme antamalla AppLoggingRatelle arvon "10", jonka avulla laskemme ikkunoiden otsikoiden sieppaamisen välisen ajan.
Kun sitä käytetään AHK: n lepotilatoiminnon kanssa, 1000 on suunnilleen yhtä suuri kuin sekunti. Joten kertomalla se AppLogingRaten kanssa, teemme muuttujasta SleepTime "yhtä kuin kymmenen sekuntia".
LogPath on polku, johon haluamme tallentaa lokit. Käytämme arvoa %A_ScriptDir%, joka tarkoittaa "kansiota, josta suoritat komentosarjan". Voit halutessasi käyttää koko polkua toiseen kansioon.
Lopuksi asetimme LastActiveWindowin tyhjäksi. Käytämme tätä myöhemmin tarkistaaksemme, onko aktiivinen ikkuna muuttunut.
2. Tarkkaile aktiivista Windowsia
Koska haluamme jatkuvasti seurata, mikä ikkuna on aktiivinen, ja jos se muuttuu, kirjata sen otsikko ja aika, joudumme käyttämään "silmukkaa".
Kuten sen nimi kertoo, silmukka toimii jatkuvasti toistaen samaa funktiota. AHK: n suoraviivaisen syntaksin ansiosta uskomme, että seuraava "koodi" on suhteellisen itsestään selvä:
Silmukka
{
Lepotila %SleepTime%
Viestilaatikko, se toimii!
}
Määrittelemme silmukan kirjoittamalla sanan "silmukka" ja merkitsemällä sen alkuun "{" ja loppu "}". Kaikki rivit "{" ja "}" välillä toimivat jatkuvasti, kunnes poistut skriptistä.
Aloitamme silmukan odottamalla (Sleep) ajan, joka on yhtä suuri kuin muuttuja SleepTime. Asetimme sen muuttujaksi edellisessä luvussa tehdäksemme ajan hallinnasta yksinkertaisempaa. Sen sijaan, että muokkaat itse skriptiä, voit "kertoa" sille tämän muuttujan kautta, kuinka monta sekuntia kunkin silmukan tulee kestää.
Lopuksi käytämme viestilaatikkoa skriptimme testaamiseen. Yritä tallentaa ja suorittaa se (kaksoisnapsauta sen tiedostoa). Näet viestiruudun, jossa lukee "Se toimii!" kymmenen sekunnin jälkeen.
Napsauta hiiren kakkospainikkeella AHK: n kuvaketta Windows-palkissa ja poistu komentosarjasta, kun viestilaatikoita on tarpeeksi. Palaa sitten editoriin ja korvaa MsgBox-rivi seuraavasti:
WinGetActiveTitle, ActiveWindow
Tämä on komento aktiivisen ikkunan otsikon saamiseksi. Ohita ylimääräinen "StoreActiveWindow" -rivi, jota käytimme kirjoittaessamme skriptiä testausta varten.
3. Hanki nykyinen aika ja nimi
Nyt tulee käsikirjoituksen logiikan ydin. Haluamme sen vertaavan aktiivisen ikkunan nimeä edelliseen, ja jos ne ovat erilaisia, "tee jotain". Se on yhtä yksinkertaista kuin seuraava:
Jos ActiveWindow != %LastActiveWindow%
{
}
Yllä olevan avulla tarkistamme, onko nykyinen ActiveWindow eri (!=) kuin muuttujaan LastActiveWindow tallennettu arvo (jonka olemme alun perin asettanut tyhjäksi). Jos on, AHK suorittaa koodin välillä { ja }, jotka ovat toistaiseksi tyhjiä.
Meidän on pidettävä kirjaa sekä päivämäärästä että kellonajasta mitataksemme, kuinka kauan ikkuna on ollut aktiivinen. Pidämme jokaiselle päivälle eri lokeja käyttäen heidän nimensä päivämäärää. Ja haluamme kirjata jokaisen ikkunamuutoksen lisäksi myös kun se tapahtui. Tätä varten määritämme eri aikamuodot muuttujille LogTime ja LogFilename, joissa on:
FormatTime, LogTime,, HH: mm: ss
FormatTime, lokitiedoston nimi,, vvvv-KK-pp
Lisää nämä rivit "If ActiveWindow..." -kohtaan kiharahakasulkeisiin, jotta AHK suorittaa ne, kun se havaitsee ikkunan muutoksen.
4. Tietojen muotoilu
Olemme nappaaneet ajan kahdessa eri muotoillussa muuttujassa sekä aktiivisen ikkunan otsikossa. Siinä on kuitenkin pieni ongelma: ikkunan otsikko voi sisältää myös merkkejä, joita emme halua. Voimme poistaa kaikki ei-aakkosnumeeriset merkit käyttämällä AHK: n RegEx-tukea seuraavilla tavoilla:
LogWindow := Regexreplace (ActiveWindow, "[^a-zA-Z0-9]", " ")
Tällä "käskemme" AHK: ta poistamaan ActiveWindow-muuttujasta kaikki merkit, jotka eivät vastaa suluissa olevia merkkejä:
- Pienet kirjaimet
- Isot kirjaimet
- Numerot
Sitten kohdistamme tuloksen muuttujaan LogWindow.
Kun kaikki muuttujat on asetettu ja kaikki arvokkaat tiedot on kerätty, olemme valmiita muotoilemaan lokitiedostomme ja sen sisällön.
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
Olemme aiemmin määrittäneet nykyisen päivämäärän LogFilename-muuttujalle. Näin ollen ensimmäisellä rivillä ilmoitamme vain, että haluamme lisätä "_AppLog.md" päivämäärään käyttääksemme sitä tiedostonimenä.
Toisella rivillä yhdistämme muuttujan LogPath, jonka määritimme alussa lokien kohteeksi, tiedostonimeen. Niiden yhdistelmä on lokin koko polkunimi, joka on määritetty LogFile-muuttujalle.
Määritetään FileContent-muuttujalle vastine "tyhjä rivi, aika - ikkunan nimi, kaksi tyhjää riviä lisää, jakaja ja toinen tyhjä rivi hyvässä mittakaavassa".
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
- "n"-kirjaimet käskevät AHK: ta syöttämään uuden rivin (vastaa Enter-näppäintä kerran).
- Kolme viivaa näkyvät jakajana, kun ne esitetään merkintöjen kanssa yhteensopivassa katseluohjelmassa.
- "%LogTime%" ja "%LogWindow%" ovat muuttujia, joihin olemme tallentaneet aktiivisen ikkunan nimen ja sen havaitsemisajan.
5. Päivitä tiedosto
Olemme määrittäneet, mitä haluamme kirjoittaa tiedostoomme, ja tiedämme sen polun ja tiedostonimen. Jäljelle jää vain varsinainen kirjoittaminen, joka on yhtä helppoa kuin:
FileAppend, %FileContent%, %LogFile%
Se on melkein yhtä yksinkertaista kuin tavallinen englanti: liitämme kaikki "FileContent"-muuttujan "LogFile" -tiedostoon.
"Liitä"-toiminto lisää "FileContent"-tiedoston tiedostoon, jos se on olemassa, mutta myös luo sen tyhjästä, jos sitä ei ole.
Mutta odota, on vielä viimeinen säätö: LastActiveWindow-muuttujan sisällön korvaaminen tällä hetkellä aktiivisella ikkunalla.
Tämän avulla skripti pystyy havaitsemaan Seuraava ikkunan vaihto.
LastActiveWindow = %ActiveWindow%
Ja viimeisellä lisäyksellä ikkunaloggerisi on valmis! Tallenna se ja suorita se. Tarkista sitten markdown-tiedosto, joka ilmestyy komentosarjatiedostosi kansioon kymmenen sekunnin kuluttua.
Hallitse aikaasi
Voit avata lokitiedoston millä tahansa tekstieditorilla. Silti se näyttää kauniimmalta, jos avaat sen markdown-yhteensopivassa editorissa. Kuvakaappauksessa näet lokimme suositussa Typora-editorissa.
Se on helppo tapa tarkistaa, mihin sovelluksiin olet käyttänyt eniten aikaa, ja tarvitset vain jotain, kuten Muistio, käyttääksesi sitä.
Jos haluat jotain "enemmän", voit aina "tyylitellä" loggerin tulosteen CSV-tiedostojen tuottamiseksi. Se on yhtä helppoa kuin FileContent-muuttujan ja luodun tiedoston tunnisteen säätäminen. Voit sitten tuoda tällaisia tiedostoja sovelluksiin, kuten Excel, Google Calc tai jopa kolmannen osapuolen aikaseuranta.
Koko käsikirjoitus:
#NoEnv; Suositellaan suorituskyvyn ja yhteensopivuuden vuoksi tulevien AutoHotkey-julkaisujen kanssa.
; #Varoittaa; Ota käyttöön varoitukset yleisten virheiden havaitsemiseksi.
SendMode Input; Suositellaan uusille skripteille sen ylivoimaisen nopeuden ja luotettavuuden vuoksi.
SetWorkingDir %A_ScriptDir%; Varmistaa johdonmukaisen aloitushakemiston.
; Muuttujat
;
AppLoggingRate = 10; Aikaväli (sekunteina) aktiivisten ikkunan otsikon kaappausten välillä.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
; Logiikka
;
Silmukka
{
Lepotila %SleepTime%
WinGetActiveTitle, ActiveWindow
StoreActiveWindow = %ActiveWindow%
Jos ActiveWindow != %LastActiveWindow%
{
FormatTime, LogTime,, HH: mm: ss
FormatTime, lokitiedoston nimi,, vvvv-KK-pp
LogWindow := Regexreplace (ActiveWindow, "[^a-zA-Z0-9]", " ")
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
nukkua 50
FileAppend, %FileContent%, %LogFile%
LastActiveWindow = %ActiveWindow%
}
}
Poistu
AutoHotkeyn avulla voit tehdä mukautettuja Windows-pikakuvakkeita, makroja ja paljon muuta! Tässä on joitain hyödyllisiä AutoHotkey-skriptejä, joiden avulla pääset alkuun.
Lue Seuraava
- Windows
- Tuottavuus
- Windows
- AutoHotkey
- Ajanhallinta
- Tuottavuuden temppuja

OK: n todellinen elämä alkoi noin 10-vuotiaana, kun hän sai ensimmäisen tietokoneensa - Commodore 128:n. Siitä lähtien hän on sulattanut näppäimiä kirjoittamalla 24/7 ja yrittänyt levittää The Word Of Techiä kaikille kiinnostuneille kuuntelemaan. Tai pikemminkin lukea.
tilaa uutiskirjeemme
Liity uutiskirjeemme saadaksesi teknisiä vinkkejä, arvosteluja, ilmaisia e-kirjoja ja eksklusiivisia tarjouksia!
Klikkaa tästä tilataksesi