Du begynder hver dag med de bedste intentioner, forynget, klar til at tackle alle dine opgaver. Så tjekker du klokken, den er 03:00, og du kan ikke lade være med at spekulere på, hvor er al tiden blevet af?

Du kan bruge en dedikeret tidsregistreringsapp, men de kan være irriterende komplekse. Plus, hvor er det sjove i det?

Hvorfor ikke lave din egen simple mini-app i stedet, som kunne spore alle de vinduer, du har brugt tid på i løbet af dagen? Du skal kun bruge AutoHotKey, en grundlæggende tekstbehandler som Notesblok, og omkring en halv time. Lad os hænge fast.

Hvad er AutoHotKey?

AutoHotKeys primære formål er desktop automatisering. Det er et scriptsprog, hvormed du kan sende tastetryk og musebevægelser til ethvert aktivt vindue, oprette genvejstaster eller ændre tastetryk. Du kan f.eks. bruge det til deaktiver bestemte taster på dit tastatur.

Det er dog den korte version af historien og ikke virkelig repræsentativ for, hvad AutoHotKey (forkortet AHK) kan. Det er fordi det har udviklet sig siden dets oprindelige koncept og nu er et komplet scriptsprog. Du kan tænke på, hvad du kan gøre med det som "programmering Lite."

instagram viewer

Således kan du også bruge AHK til at lave mini-apps, præcis som det, vi har sat som vores mål for denne artikel. Bemærk, at vi i denne artikel dykker direkte ind i AHK, så det kan være en god ide at tjekke vores hurtige AutoHotKey-guide for begyndere før du går i gang.

Oprettelse af dit eget vindueslogningsscript med AutoHotKey

Før vi begynder, bør du have AHK installeret på din computer, da det vil fungere som "parser" for dit script. Det er "motoren", der vil tillade dit script "at køre".

Bemærk: Du kan også kompilere dit script efter det er færdigt for at gøre det til et faktisk eksekverbart program. Det er dog uden for rammerne af denne artikel.

Download AutoHotKey fra dens officielle side og installere det.

Tænd din yndlingsfilhåndtering, og besøg en mappe, hvor du vil gemme dit script. Højreklik derefter på et tomt sted, og vælg Nyt > AutoHotKey-script.

Når det er gjort, er det tid til at skrive selve manuskriptet.

1. Definer de nødvendige variabler

Åbn scriptet i din yndlingseditor. Du kan bruge noget så simpelt som Notepad, der følger med Windows, men vi bruger det Notesblok++ for denne guide. Da Notepad++ er gratis og bedre skræddersyet til formålet, er det værd at prøve det af. Sørg også for at tjekke vores ultimative guide til alle dens tastaturgenveje mens du tjekker det ud.

Bemærk, at du ikke bør bruge nogen app som Word eller Google Docs, som kan påvirke formateringen. Brug enten en tekst- eller "kode"-editor.

Scriptet vil allerede indeholde nogle grundlæggende anbefalinger, der anbefales til kompatibilitet og ydeevne. Lad dem være som de er, og start dit manuskript under dem.

Start med:

AppLoggingRate = 10; Tidsinterval (i sekunder) mellem aktive vinduestitler.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =

Vi begynder med at tildele værdien "10" til AppLoggingRate, som vi vil bruge til at beregne tiden mellem indfangning af vinduestitler.

Når det bruges sammen med AHK's Sleep-funktion, er 1000 nogenlunde lig med et sekund. Så ved at gange det med AppLogingRate, gør vi variablen SleepTime "lig med ti sekunder".

LogPath er stien, hvor vi ønsker at gemme vores logfiler. Vi bruger værdien %A_ScriptDir%, som oversættes til "mappen, hvorfra du kører scriptet". Du kan bruge den fulde sti til en anden mappe, hvis du vil.

Til sidst sætter vi LastActiveWindow til tom. Vi bruger dette senere til at kontrollere, om det aktive vindue er ændret.

2. Overvåg de aktive Windows

Da vi løbende vil holde styr på, hvilket vindue der er aktivt, og hvis det ændrer sig, skal du logge dets titel og tid, så bliver vi nødt til at bruge "en loop".

Som navnet siger, kører en løkke kontinuerligt og gentager den eller de samme funktion(er). Takket være AHKs enkle syntaks mener vi, at følgende "kode" er relativt selvforklarende:

Løkke
{
Søvn %SleepTime%
Msgbox, det virker!
}

Vi definerer en loop ved blot at skrive ordet "loop" og derefter markere dens begyndelse med "{" og slutte med "}". Alt i linjerne mellem "{" og "}" vil køre uafbrudt, indtil du afslutter scriptet.

Vi begynder løkken med at vente (Sleep) i et tidsrum svarende til variablen SleepTime. Vi indstillede det som en variabel i det forrige kapitel for at gøre det nemmere at kontrollere tiden. I stedet for at redigere selve scriptet, kan du "fortælle" det, gennem denne variabel, hvor mange sekunder hver loop skal vare.

Til sidst bruger vi en beskedboks til at teste vores script. Prøv at gemme og køre den (dobbeltklik på dens fil). Du vil se en beskedboks, der siger "Det virker!" efter ti sekunder.

Højreklik på AHKs ikon i Windows-bakken og afslut scriptet, når du har fået nok beskedbokse. Vend derefter tilbage til din editor, og erstat MsgBox-linjen med:

WinGetActiveTitle, ActiveWindow

Dette er kommandoen til at få det aktive vindues titel. Ignorer den ekstra "StoreActiveWindow"-linje, som vi brugte, mens vi skrev scriptet til test.

3. Få den aktuelle tid og navn

Nu kommer kernedelen af ​​scriptets logik. Vi vil have det til at sammenligne det aktive vindues navn med det forrige, og hvis de er anderledes, "gør noget". Det er så enkelt som følgende:

If ActiveWindow != %LastActiveWindow%
{
}

Med ovenstående kontrollerer vi, om det aktuelle ActiveWindow er anderledes (!=) end værdien gemt i variablen LastActiveWindow (som vi oprindeligt har sat til tom). Hvis det er det, vil AHK udføre koden mellem { og }, som indtil videre er tomme.

Vi skal holde styr på både dato og klokkeslæt for at måle, hvor længe et vindue har været aktivt. Vi fører forskellige logfiler for hver dag ved at bruge datoen i deres navn. Og vi ønsker at logge ikke kun hver vinduesændring, men også hvornår det skete. Til det vil vi tildele forskellige tidsformater til variablerne LogTime og LogFilename med:

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

Tilføj disse linjer mellem de krøllede parenteser under "Hvis ActiveWindow...", for at få AHK til at køre dem, når den registrerer en vinduesændring.

4. Dataformatering

Vi har grebet tiden i to forskelligt formaterede variabler, såvel som det aktive vindues titel. Der er dog et lille problem: et vindues titel kan også indeholde tegn, vi ikke ønsker. Vi kan fjerne alle ikke-alfanumeriske tegn ved hjælp af AHK's understøttelse af RegEx, med:

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

Med dette "beder" vi AHK om at fjerne alle tegn fra ActiveWindow-variablen, der ikke matcher det, der står i parentes:

  • Små bogstaver
  • Store bogstaver
  • Tal

Derefter tildeler vi resultatet til variablen LogWindow.

Med alle variabler indstillet og alle værdifulde data grebet, er vi klar til at formatere vores logfil og dens indhold.

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

Vi har tidligere tildelt den aktuelle dato til LogFilename-variablen. Med den første linje siger vi blot, at vi ønsker at tilføje "_AppLog.md" til datoen for at bruge det som et filnavn.

I den anden linje kombinerer vi variablen LogPath, som vi i begyndelsen definerede som destination for vores logfiler, med filnavnet. Deres kombination er loggens fulde stinavn, tildelt til LogFile-variablen.

Lad os tildele det, der svarer til "tom linje, Tid - Vinduets navn, yderligere to tomme linjer, en divider og en anden tom linje, for en god ordens skyld" til FileContent-variablen.

FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
  • "`n"'erne fortæller AHK at indtaste en ny linje (svarende til at trykke på Enter én gang).
  • De tre bindestreger vises som en skillelinje, når de præsenteres i en markdown-kompatibel fremviser.
  • "%LogTime%" og "%LogWindow%" er de variabler, hvor vi har gemt det aktive vindues navn og tidspunktet det blev opdaget.

5. Opdater filen

Vi har defineret, hvad vi vil skrive til vores fil, og vi kender dens sti og filnavn. Tilbage er blot selve skrivningen, som er så let som:

FileAppend, %FileContent%, %LogFile%

Det er næsten lige så ligetil som almindeligt engelsk: vi tilføjer alt i "FileContent"-variablen til filen "LogFile".

Funktionen "tilføj" tilføjer "FileContent" til filen, hvis den findes, men vil også oprette den fra bunden, hvis den ikke gør det.

Men vent, der er en sidste tweak: at erstatte LastActiveWindow-variablens indhold med det aktuelt aktive vindue.

Med dette vil scriptet være i stand til at detektere Næste vinduesskift.

LastActiveWindow = %ActiveWindow%

Og med den sidste tilføjelse er din vindueslogger klar! Gem det, og kør det. Tjek derefter markdown-filen, som vises i din scriptfils mappe efter ti sekunder.

Mestre din tid

Du kan åbne din logfil med en hvilken som helst teksteditor. Alligevel vil det se smukkere ud, hvis du åbner det i en markdown-kompatibel editor. På skærmbilledet kan du se vores log i den populære Typora-editor.

Det er en nem måde at tjekke, hvilke apps du har brugt mest tid på, og du behøver kun noget som Notesblok for at bruge det.

Hvis du gerne vil have noget "mere", kan du altid "style" din loggers output til at producere CSV-filer i stedet. Det er lige så nemt som at justere FileContent-variablen og den oprettede fils udvidelse. Du kan derefter importere sådanne filer til apps som Excel, Google Calc eller endda tredjeparts tidsregistrering.

Fuldt manuskript:

#IngenEnv; Anbefales for ydeevne og kompatibilitet med fremtidige AutoHotkey-udgivelser.
; #Advare; Aktiver advarsler for at hjælpe med at opdage almindelige fejl.
SendMode Input; Anbefales til nye scripts på grund af dets overlegne hastighed og pålidelighed.
SetWorkingDir %A_ScriptDir%; Sikrer en ensartet startmappe.
; Variabler
;
AppLoggingRate = 10; Tidsinterval (i sekunder) mellem aktive vinduestitler.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
; Logik
;
Løkke
{
Søvn %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]", " ")
LogFilenavn = %LogFilenavn%_AppLog.md
LogFile = %LogPath%\%LogFilename%
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
sove 50
FileAppend, %FileContent%, %LogFile%
LastActiveWindow = %ActiveWindow%
}
}
Afslut
10 seje AutoHotkey-scripts (og hvordan man laver dit eget!)

AutoHotkey lader dig lave brugerdefinerede Windows-genveje, makroer og mere! Her er nogle nyttige AutoHotkey-scripts til at komme i gang.

Læs Næste

DelTweetE-mail
Relaterede emner
  • Windows
  • Produktivitet
  • Windows
  • AutoHotkey
  • Tidsadministration
  • Produktivitetstricks
Om forfatteren
Odysseas Kourafalos (12 artikler udgivet)

OKs virkelige liv startede omkring klokken 10, da han fik sin første computer - en Commodore 128. Siden da har han smeltet nøglekapsler ved at skrive 24/7 og forsøgt at sprede The Word Of Tech til alle, der er interesserede nok til at lytte. Eller rettere sagt læs.

Mere fra Odysseas Kourafalos

Abonner på vores nyhedsbrev

Tilmeld dig vores nyhedsbrev for tekniske tips, anmeldelser, gratis e-bøger og eksklusive tilbud!

Klik her for at abonnere