Sådan opretter du et tidsregistreringsprogram på Windows med AutoHotKey

Sådan opretter du et tidsregistreringsprogram på Windows med AutoHotKey

Du starter dit arbejde hver dag tidligt, så du kan løse alt i løbet af dagen. Så tjekker du uret, og det er 3 om morgenen, men dit arbejde er stadig ikke færdigt. Så hvor er tiden blevet af?

Du kan bruge en dedikeret tidsregistreringsapp, men disse kan være komplicerede og frustrerende. Hvorfor ikke i stedet oprette din egen enkle lille app? Denne applikation kan spore alle de vinduer, du har brugt i løbet af dagen. Du skal bare bruge AutoHotKey, en grundlæggende tekstbehandler som Notesblok, og cirka en halv time. Lad os komme igang!

Opret dit eget Windows-logningsscript med AutoHotKey

Før du starter, bør du installere AHK på din computer, fordi det vil fungere som en "parser" for scriptet. Det er værktøjet, der tillader dit script at "køre".

Bemærk : Du kan også kompilere scriptet efter færdiggørelsen for at gøre det til et rigtigt eksekverbart program. Det er dog uden for rammerne af denne artikel.

Download AutoHotKey fra den officielle hjemmeside og installer den.

Sådan opretter du et tidsregistreringsprogram på Windows med AutoHotKey

Vælg Ny > AutoHotKey Script

Tænd din foretrukne filhåndtering og få adgang til den mappe, hvor du vil gemme scriptet. Højreklik derefter på en tom placering og vælg Ny > AutoHotKey Script .

Når det er færdigt, er det tid til at skrive selve manuskriptet.

1. Identificer nødvendige variabler

Åbn scriptet i din yndlingseditor. Du kan bruge noget simpelt som Notepad, der følger med Windows, men artiklen vil bruge Notepad++  til denne tutorial. Notepad++ er gratis og bedre tilpasset til dette formål, så du bør prøve det af.

Bemærk, at du ikke bør bruge nogen programmer såsom Word eller Google Docs, som kan påvirke scriptets formatering. Brug en tekst- eller kodeeditor.

Scriptet vil indeholde nogle grundlæggende anbefalede oplysninger om kompatibilitet og ydeevne. Lad dem være, som de er, og start scriptet nedenfor.

Starter med:

AppLoggingRate = 10 ; Time interval (in seconds) between active window title captures.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =

Start med at tildele værdien "10" til AppLoggingRate , som vil blive brugt til at beregne tiden mellem vindueslogningsforsøg.

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

LogPath er stien, der bruges til at gemme logfiler. Eksemplet 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 skal du indstille LastActiveWindow til at tømme og bruge senere til at kontrollere, om det aktive vindue er ændret.

2. Overvåg aktive vinduer

Da vi løbende vil overvåge, hvilket vindue der er aktivt, og hvis det ændrer sig, skal du registrere titlen og klokkeslættet, bliver vi nødt til at bruge en "loop".

Som navnet antyder, kører en løkke kontinuerligt og gentager den eller de samme funktion(er). Takket være AHKs simple syntaks er følgende "kode" relativt let at forstå:

Loop
{
    Sleep %SleepTime%
    Msgbox, It Works!
}

Definer 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 for evigt, indtil du afslutter scriptet.

Start løkken ved at vente ( Sleep ) i et tidsrum svarende til SleepTime-variablen. Denne variabel gør tidsstyringen nemmere. I stedet for selv at redigere scriptet, kan du via denne variabel "fortælle" det, hvor mange sekunder hver loop skal vare.

Brug endelig Message Box til at teste scriptet. Prøv at gemme og køre det (dobbeltklik på script-filen). Du vil se en beskedboks, der siger "Det virker!" (script virker) efter 10 sekunder.

Højreklik på AHK's ikon i Windows-bakken og afslut scriptet, når du har fået nok beskedbokse. Gå derefter tilbage til editoren og erstat MsgBox- linjen med:

WinGetActiveTitle, ActiveWindow

Dette er kommandoen til at få titlen på det aktive vindue. Udelad den ekstra "StoreActiveWindow" -linje , som eksemplet brugte under scripting til test.

Sådan opretter du et tidsregistreringsprogram på Windows med AutoHotKey

Hent titlen på det aktive vindue og gem det i en variabel

3. Få det aktuelle tidspunkt og navn

Nu kommer kernen i script-logikken. Sammenlign det aktive vindues navn med det forrige, og hvis de adskiller sig, "gør noget". Alt er så enkelt som dette:

If ActiveWindow != %LastActiveWindow%
{
}

I betragtning af ovenstående skal du kontrollere, om det aktuelle ActiveWindow er forskelligt ( != ) fra værdien, der er gemt i LastActiveWindow- variablen (som oprindeligt blev sat til tom). Hvis det er tilfældet, vil AHK udføre koden mellem { og } , som i øjeblikket er tom.

Indstil funktionen til at sammenligne titlen på det aktive vindue og det forrige vindue

Det er nødvendigt at spore både dato og klokkeslæt for at måle oppetiden for et vindue. Forskellige logfiler for hver dag, der bruger datoen i deres navn, vil blive bevaret. Ikke kun hver ændring, men også den tid, den finder sted, vil blive registreret. For at gøre det skal du 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 klammeparenteser i "Hvis ActiveWindow..." , så AHK kører dem, når den registrerer en vinduesændring.

Sådan opretter du et tidsregistreringsprogram på Windows med AutoHotKey

Få den aktuelle tid og tildel den i to variabler i forskellige formater

4. Dataformat

Vi fanger nu tiden i to forskelligt formaterede variabler, samt titlen på det aktive vindue. Der er dog et lille problem: Vinduets titel kan også indeholde uønskede tegn. Det er muligt at 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 i tankerne, lad os "bede" AHK om at fjerne alle tegn fra ActiveWindow-variablen, der ikke matcher det, der står i parentes:

  • Små bogstaver
  • Stort bogstav
  • Tal

Tildel derefter resultatet til LogWindow-variablen.

Sådan opretter du et tidsregistreringsprogram på Windows med AutoHotKey

Ryd op i det aktive vindues titel med RegEx

Med alle variabler indstillet og alle værdifulde data indsamlet, er du nu klar til at formatere logfilen og dens indhold.

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

Tidligere tildelte vi den aktuelle dato til variabelen LogFilename. Derfor, for den første linje, skal du tilføje "_AppLog.md" til datoen for at bruge det som filnavn.

Sådan opretter du et tidsregistreringsprogram på Windows med AutoHotKey

Indstil logfilens navn

På den anden linje skal du kombinere variablen LogPath , defineret i begyndelsen som destinationen for logfilen sammen med filnavnet. Deres kombination er det fulde stinavn på logfilen, der er tildelt variablen LogFile.

Lad os tildele den ækvivalente værdi af "tom linje, Tid - Vinduets navn, to tomme linjer mere, en divider og en anden tom linje, for en god ordens skyld" til FileContent-variablen.

FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
  • Bogstavet "n" fortæller AHK at indtaste en ny linje (svarende til at trykke på Enter én gang).
  • Tre bindestreger vises som en separator, når de vises i en cross-down-kompatibel fremviser.
  • "% LogTime%" og "% LogWindow%" er variabler, der lagrede navnet på det aktive vindue og tidspunktet, det blev registreret.

Sådan opretter du et tidsregistreringsprogram på Windows med AutoHotKey

Bestemmer indholdet af logfilen

5. Opdater filer

Du har defineret, hvad vi vil skrive til filen, samt dens sti og filnavn. Tilbage er blot den egentlige, enkle tekst som følger:

FileAppend, %FileContent%, %LogFile%

Føj alt i "FileContent" -variablen til "LogFile"-filen.

Sådan opretter du et tidsregistreringsprogram på Windows med AutoHotKey

Brug AHK's Tilføj-funktion til at opdatere logfilen eller oprette en fra bunden

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

Der er en sidste tweak: Erstat indholdet af LastActiveWindow- variablen med det aktuelt aktive vindue.

Sådan opretter du et tidsregistreringsprogram på Windows med AutoHotKey

Indsætter titlen på det aktuelle aktive vindue i LastActiveWindow-variablen til fremtidig test

For at gøre dette skal scriptet være i stand til at registrere den næste vinduesændring.

LastActiveWindow = %ActiveWindow%

Og med den sidste tilføjelse er Windows-loggeren klar! Gem scriptet og kør det. Tjek derefter markdown-filen, denne fil vises i script-filmappen efter 10 sekunder.

Sådan opretter du et tidsregistreringsprogram på Windows med AutoHotKey

Windows-logfilen oprettes i samme mappe som scriptet

Tag ansvar for din egen tid

Du kan åbne logfilen med en hvilken som helst teksteditor. Det vil dog se bedre ud, hvis du åbner det i en markdown-kompatibel editor. På skærmbilledet kan du se loggen i den populære Typora-editor.

Sådan opretter du et tidsregistreringsprogram på Windows med AutoHotKey

Markdown-filen, der genereres af scriptet, indlæses i Typora

Det er en nem måde at tjekke, hvilke apps du har brugt mest tid og kræver kun et værktøj som Notesblok at bruge.

Hvis du vil have noget "mere specielt", kan du altid "style" loggerens output til i stedet at oprette en CSV-fil. Det er lige så nemt som at justere FileContent- variablen og udvidelsen af ​​den oprettede fil. Du kan derefter importere sådanne filer til applikationer som Excel, Google Calc eller endda tredjeparts tidsregistrering.

Komplet script

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
; #Warn  ; Enable warnings to assist with detecting common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
; Variables
; ---------
AppLoggingRate = 10 ; Time interval (in seconds) between active window title captures.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow = 
; Logic
; -----
Loop
{
	Sleep %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
		
		sleep 50
		
		FileAppend, %FileContent%, %LogFile%
		LastActiveWindow = %ActiveWindow%
	}
}
Exit

Advarsel om Sqpc Ransomware, der tilhører STOP/Djvu-familien

Advarsel om Sqpc Ransomware, der tilhører STOP/Djvu-familien

Sqpc tilføjer sin specielle filtypenavn .sqpc til alle filer. For eksempel vil filen video.avi blive ændret til video.avi.sqpc. Så snart kryptering er udført med succes, opretter Sqpc en speciel fil _readme.txt , og tilføjer den til alle mapper, der indeholder ændrede filer.

Sådan opsætter og konfigurerer du DDNS på Draytek router

Sådan opsætter og konfigurerer du DDNS på Draytek router

Dynamic DNS service (DDNS) er løsningen, når du vil tilgå routeren fra internettet, men den har en dynamisk IP-adresse. Du kan tilmelde dig Dynamic DNS-tjenesten og registrere et værtsnavn til routeren.

Sådan fjerner du admin-loginkrav ved udskrivning efter PrintNightmare-patch

Sådan fjerner du admin-loginkrav ved udskrivning efter PrintNightmare-patch

Efter installation af PrintNightmare-patchen vil nogle printere bede om administratoroplysninger, hver gang brugeren forsøger at udskrive i et Windows-peg og udskriv-miljø.

Instruktioner til at deaktivere deling af internetforbindelse på Windows

Instruktioner til at deaktivere deling af internetforbindelse på Windows

Nogle gange vil deling af internetforbindelsen fra din computer blive langsommere og reducere internetforbindelsens ydeevne, især når du ser film online eller downloader bestemte filer til din computer. Derudover, hvis netværkslinjen er ustabil, er det bedst at slukke for den direkte internetforbindelsesdeling (Internet Connection Sharing) på din computer.

Deaktiver NTFS-filkomprimering for at fremskynde Windows-computere

Deaktiver NTFS-filkomprimering for at fremskynde Windows-computere

NTFS-filkomprimeringsfunktion er en funktion tilgængelig på Windows-operativsystemer. Windows-brugere kan bruge denne funktion til at komprimere filer for at spare plads på NTFS-harddiske. Men i nogle tilfælde reducerer denne funktion systemets ydeevne og bruger mange systemressourcer. Derfor bør du deaktivere denne funktion for at fremskynde Windows.

10 stykker information brugt til at stjæle din identitet

10 stykker information brugt til at stjæle din identitet

Identitetstyveri kan have uforudsigelige konsekvenser for ofrene. Lad os udforske 10 typer information, som tyve bruger til at stjæle identiteter gennem den følgende artikel!

Hvad er TeamViewer?

Hvad er TeamViewer?

TeamViewer er et velkendt navn for mange mennesker, især dem, der bruger computere regelmæssigt og arbejder inden for teknologiområdet. Så hvad er TeamViewer?

Sådan viser du installerede drivere i Windows (PowerShell CMD)

Sådan viser du installerede drivere i Windows (PowerShell CMD)

Hvis du har brug for at vide, hvilke drivere der er installeret i dit system, er her en simpel PowerShell-kommando til at få en liste over installerede drivere i Windows.

Grønne tapeter, smukke grønne tapeter til computere og telefoner

Grønne tapeter, smukke grønne tapeter til computere og telefoner

Grøn er også et tema, som mange fotografer og designere bruger til at skabe tapetsæt, hvor hovedfarven er grøn. Nedenfor er et sæt grønne wallpapers til computere og telefoner.

Sådan finder og åbner du filer ved hjælp af kommandoprompt

Sådan finder og åbner du filer ved hjælp af kommandoprompt

Denne metode til at søge og åbne filer siges at være hurtigere end at bruge File Explorer.