Sie beginnen jeden Tag mit den besten Absichten, verjüngt und bereit, alle Ihre Aufgaben anzugehen. Dann schaust du auf die Zeit, es ist 03:00 Uhr und du kannst nicht anders, als dich zu fragen, wo ist die ganze Zeit geblieben?
Sie könnten eine dedizierte Zeiterfassungs-App verwenden, aber diese können ärgerlich komplex sein. Außerdem, wo ist der Spaß daran?
Warum erstellen Sie nicht stattdessen Ihre eigene einfache Mini-App, die alle Fenster aufzeichnet, an denen Sie während des Tages Zeit verbracht haben? Sie benötigen nur AutoHotKey, ein einfaches Textverarbeitungsprogramm wie Notepad, und etwa eine halbe Stunde. Bleiben wir dabei.
Was ist AutoHotKey?
Der Hauptzweck von AutoHotKey ist die Desktop-Automatisierung. Es ist eine Skriptsprache, mit der Sie Tastenanschläge und Mausbewegungen an jedes aktive Fenster senden, Hotkeys erstellen oder Tastendrücke ändern können. Sie können es zum Beispiel verwenden, um Deaktivieren Sie bestimmte Tasten auf Ihrer Tastatur.
Dies ist jedoch die Kurzfassung der Geschichte und nicht wirklich repräsentativ für das, was AutoHotKey (kurz AHK) leisten kann. Das liegt daran, dass es sich seit seiner ursprünglichen Konzeption weiterentwickelt hat und jetzt eine vollständige Skriptsprache ist. Sie können sich vorstellen, was Sie damit tun können, als "Lite programmieren".
So können Sie mit AHK auch Mini-Apps erstellen, genau wie wir es uns für diesen Artikel zum Ziel gesetzt haben. Beachten Sie, dass wir in diesem Artikel direkt in die AHK eintauchen, also sollten Sie vielleicht nachsehen unsere schnelle AutoHotKey-Anleitung für Anfänger bevor Sie anfangen.
Erstellen Sie Ihr eigenes Window-Logging-Skript mit AutoHotKey
Bevor wir beginnen, sollten Sie AHK auf Ihrem Computer installiert haben, da es als "Parser" für Ihr Skript fungiert. Es ist "die Engine", die Ihrem Skript die "Ausführung" ermöglicht.
Hinweis: Sie können Ihr Skript auch kompilieren, nachdem es fertig ist, um es in ein tatsächlich ausführbares Programm zu verwandeln. Dies liegt jedoch außerhalb des Rahmens dieses Artikels.
AutoHotKey herunterladen von seiner offiziellen Seite und installieren Sie es.
Starten Sie Ihren bevorzugten Dateimanager und besuchen Sie einen Ordner, in dem Sie Ihr Skript speichern möchten. Klicken Sie dann mit der rechten Maustaste auf eine leere Stelle und wählen Sie Neu > AutoHotKey-Skript.
Sobald dies erledigt ist, ist es an der Zeit, das eigentliche Skript zu schreiben.
1. Definieren Sie die erforderlichen Variablen
Öffnen Sie das Skript in Ihrem bevorzugten Editor. Sie können etwas so Einfaches wie Notepad verwenden, das mit Windows geliefert wird, aber wir verwenden Notizblock++ für diese Anleitung. Da Notepad++ kostenlos und besser auf diesen Zweck zugeschnitten ist, lohnt es sich, es auszuprobieren. Überprüfen Sie auch unsere ultimative Anleitung zu allen Tastenkombinationen während Sie es überprüfen.
Beachten Sie, dass Sie keine App wie Word oder Google Docs verwenden sollten, da dies die Formatierung beeinträchtigen könnte. Verwenden Sie entweder einen Text- oder "Code"-Editor.
Das Skript enthält bereits einige Grundlagen, die für Kompatibilität und Leistung empfohlen werden. Lassen Sie sie so, wie sie sind, und starten Sie Ihr Skript darunter.
Beginnen mit:
AppLogging-Rate = 10; Zeitintervall (in Sekunden) zwischen aktiven Fenstertitel-Captures.
Schlafzeit := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
Wir beginnen damit, AppLoggingRate den Wert "10" zuzuweisen, mit dem wir die Zeit zwischen der Erfassung von Fenstertiteln berechnen.
In Verbindung mit der Sleep-Funktion von AHK entspricht 1000 ungefähr einer Sekunde. Indem wir es mit AppLogingRate multiplizieren, machen wir die Variable SleepTime "gleich zehn Sekunden".
LogPath ist der Pfad, in dem wir unsere Protokolle speichern möchten. Wir verwenden den Wert %A_ScriptDir%, was übersetzt "der Ordner ist, von dem aus Sie das Skript ausführen". Sie können den vollständigen Pfad zu einem anderen Ordner verwenden, wenn Sie möchten.
Schließlich setzen wir LastActiveWindow auf leer. Wir werden dies später verwenden, um zu überprüfen, ob sich das aktive Fenster geändert hat.
2. Überwachen Sie das aktive Fenster
Da wir ständig verfolgen möchten, welches Fenster aktiv ist, und wenn es sich ändert, seinen Titel und seine Zeit protokollieren möchten, müssen wir "eine Schleife" verwenden.
Wie der Name schon sagt, läuft eine Schleife kontinuierlich und wiederholt die gleiche(n) Funktion(en). Dank der einfachen Syntax der AHK halten wir folgenden "Code" für relativ selbsterklärend:
Schleife
{
Schlaf %SleepTime%
Msgbox, es funktioniert!
}
Wir definieren eine Schleife, indem wir einfach das Wort "loop" eingeben und dann den Anfang mit "{" und das Ende mit "}" markieren. Alles in den Zeilen zwischen "{" und "}" wird ständig ausgeführt, bis Sie das Skript beenden.
Wir beginnen die Schleife, indem wir eine Zeit warten (Sleep), die der Variablen SleepTime entspricht. Wir haben sie im vorherigen Kapitel als Variable festgelegt, um die Zeitsteuerung einfacher zu machen. Anstatt das Skript selbst zu bearbeiten, können Sie ihm über diese Variable "mitteilen", wie viele Sekunden jede Schleife dauern soll.
Schließlich verwenden wir eine Message Box, um unser Skript zu testen. Versuchen Sie, es zu speichern und auszuführen (doppelklicken Sie auf die Datei). Sie sehen ein Meldungsfeld mit der Meldung "It Works!" nach zehn Sekunden.
Klicken Sie mit der rechten Maustaste auf das AHK-Symbol im Windows-Tray und beenden Sie das Skript, wenn Sie genügend Meldungsfelder haben. Kehren Sie dann zu Ihrem Editor zurück und ersetzen Sie die MsgBox-Zeile durch:
WinGetActiveTitle, ActiveWindow
Dies ist der Befehl zum Abrufen des Titels des aktiven Fensters. Ignorieren Sie die zusätzliche Zeile "StoreActiveWindow", die wir beim Schreiben des Skripts zum Testen verwendet haben.
3. Holen Sie sich die aktuelle Uhrzeit und den Namen
Jetzt kommt der Kernteil der Logik des Skripts. Wir möchten, dass es den Namen des aktiven Fensters mit dem vorherigen vergleicht, und wenn sie sich unterscheiden, "tun Sie etwas". Es ist so einfach wie folgt:
Wenn ActiveWindow != %LastActiveWindow%
{
}
Damit prüfen wir, ob das aktuelle ActiveWindow anders (!=) ist als der Wert, der in der Variablen LastActiveWindow gespeichert ist (die wir anfänglich auf leer gesetzt haben). Ist dies der Fall, führt AHK den Code zwischen { und } aus, die vorerst leer sind.
Wir müssen sowohl das Datum als auch die Uhrzeit verfolgen, um zu messen, wie lange ein Fenster aktiv war. Wir führen für jeden Tag unterschiedliche Protokolle und verwenden das Datum in ihrem Namen. Und wir wollen nicht nur jeden Fensterwechsel protokollieren, sondern auch Wenn es passierte. Dazu weisen wir den Variablen LogTime und LogFilename unterschiedliche Zeitformate zu, mit:
FormatTime, LogTime,, HH: mm: ss
FormatTime, LogFilename,, yyyy-MMM-dd
Fügen Sie diese Zeilen zwischen den geschweiften Klammern unter "If ActiveWindow..." hinzu, damit AHK sie ausführen kann, wenn es eine Fensteränderung erkennt.
4. Datenformatierung
Wir haben die Zeit in zwei unterschiedlich formatierten Variablen erfasst, sowie den Titel des aktiven Fensters. Es gibt jedoch ein kleines Problem: Der Titel eines Fensters kann auch Zeichen enthalten, die wir nicht benötigen. Wir können alle nicht-alphanumerischen Zeichen entfernen, indem wir die Unterstützung von AHK für RegEx verwenden, mit:
LogWindow := Regexreplace (ActiveWindow, "[^a-zA-Z0-9]", "")
Damit "sagen" wir AHK, alle Zeichen aus der ActiveWindow-Variable zu entfernen, die nicht mit den Klammern übereinstimmen:
- Kleinbuchstaben
- Großbuchstaben
- Zahlen
Anschließend weisen wir das Ergebnis der Variablen LogWindow zu.
Nachdem alle Variablen gesetzt und alle wertvollen Daten erfasst wurden, sind wir bereit, unsere Protokolldatei und ihren Inhalt zu formatieren.
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
Wir haben zuvor der Variablen LogFilename das aktuelle Datum zugewiesen. Somit geben wir mit der ersten Zeile lediglich an, dass wir "_AppLog.md" zum Datum hinzufügen wollen, um es als Dateinamen zu verwenden.
In der zweiten Zeile kombinieren wir die Variable LogPath, die wir eingangs als Ziel für unsere Logs definiert haben, mit dem Dateinamen. Ihre Kombination ist der vollständige Pfadname des Logs, der der LogFile-Variable zugewiesen ist.
Weisen wir der FileContent-Variablen das Äquivalent von "leere Zeile, Zeit - Fenstername, zwei weitere leere Zeilen, einen Teiler und eine weitere leere Zeile zur Sicherheit" zu.
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
- Die "`n"'s weisen AHK an, eine neue Zeile einzugeben (entspricht dem einmaligen Drücken der Eingabetaste).
- Die drei Striche erscheinen als Trennzeichen, wenn sie in einem Markdown-kompatiblen Viewer angezeigt werden.
- "%LogTime%" und "%LogWindow%" sind die Variablen, in denen wir den Namen des aktiven Fensters und den Zeitpunkt der Erkennung gespeichert haben.
5. Aktualisieren Sie die Datei
Wir haben definiert, was wir in unsere Datei schreiben wollen, und kennen den Pfad und den Dateinamen. Was bleibt, ist das eigentliche Schreiben, das so einfach ist wie:
FileAppend, %FileContent%, %LogFile%
Es ist fast so einfach wie im Klartext: Wir hängen alles in der Variable "FileContent" an die Datei "LogFile".
Die Funktion "append" fügt den "FileContent" der Datei hinzu, wenn sie existiert, erstellt sie aber auch von Grund auf neu, wenn dies nicht der Fall ist.
Aber warten Sie, es gibt noch eine letzte Optimierung: Ersetzen Sie den Inhalt der LastActiveWindow-Variablen durch das derzeit aktive Fenster.
Damit kann das Skript die nächste Fensterwechsel.
LastActiveWindow = %ActiveWindow%
Und mit dieser letzten Ergänzung ist Ihr Fensterlogger fertig! Speichern Sie es und führen Sie es aus. Checken Sie dann die Markdown-Datei aus, die nach zehn Sekunden im Ordner Ihrer Skriptdatei angezeigt wird.
Meistere deine Zeit
Sie können Ihre Protokolldatei mit jedem Texteditor öffnen. Trotzdem sieht es schöner aus, wenn Sie es in einem Markdown-kompatiblen Editor öffnen. Im Screenshot sehen Sie unser Log im beliebten Typora-Editor.
Es ist eine einfache Möglichkeit, zu überprüfen, welche Apps Sie die meiste Zeit verbracht haben, und Sie benötigen nur etwas wie Notepad, um es zu verwenden.
Wenn Sie etwas "mehr" möchten, können Sie die Ausgabe Ihres Loggers jederzeit "stylen", um stattdessen CSV-Dateien zu erstellen. Es ist so einfach, wie die FileContent-Variable und die Erweiterung der erstellten Datei zu optimieren. Sie können solche Dateien dann in Apps wie Excel, Google Calc oder sogar Zeiterfassungen von Drittanbietern importieren.
Vollständiges Skript:
#NoEnv; Empfohlen für Leistung und Kompatibilität mit zukünftigen AutoHotkey-Versionen.
; #Warnen; Aktivieren Sie Warnungen, um häufige Fehler zu erkennen.
SendMode-Eingang; Empfohlen für neue Skripte aufgrund seiner überragenden Geschwindigkeit und Zuverlässigkeit.
SetWorkingDir %A_ScriptDir%; Sorgt für ein konsistentes Startverzeichnis.
; Variablen
;
AppLogging-Rate = 10; Zeitintervall (in Sekunden) zwischen aktiven Fenstertitel-Captures.
Schlafzeit := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
; Logik
;
Schleife
{
Schlaf %SleepTime%
WinGetActiveTitle, ActiveWindow
StoreActiveWindow = %ActiveWindow%
Wenn 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
schlaf 50
FileAppend, %FileContent%, %LogFile%
LastActiveWindow = %ActiveWindow%
}
}
Ausgang
Mit AutoHotkey können Sie benutzerdefinierte Windows-Verknüpfungen, Makros und mehr erstellen! Hier sind einige nützliche AutoHotkey-Skripte, die Ihnen den Einstieg erleichtern.
Weiter lesen
- Fenster
- Produktivität
- Fenster
- AutoHotkey
- Zeiteinteilung
- Produktivitätstricks

OKs wirkliches Leben begann um 10, als er seinen ersten Computer bekam - einen Commodore 128. Seitdem hat er Tastenkappen geschmolzen, indem er rund um die Uhr tippt und versucht, The Word Of Tech an jeden zu verbreiten, der interessiert genug ist, um zuzuhören. Oder besser gesagt lesen.
Abonniere unseren Newsletter
Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!
Klicken Sie hier, um zu abonnieren