Każdego dnia zaczynasz pracę wcześniej, aby móc rozwiązać wszystko w ciągu dnia. Następnie sprawdzasz zegar i jest 3 w nocy, ale Twoja praca wciąż nie jest skończona. Gdzie więc podział się czas?
Możesz użyć dedykowanej aplikacji do śledzenia czasu, ale może to być skomplikowane i frustrujące. Zamiast tego dlaczego nie stworzyć własnej, prostej aplikacji? Ta aplikacja może śledzić wszystkie okna, z których korzystałeś w ciągu dnia. Potrzebujesz tylko AutoHotKey, podstawowego edytora tekstu, takiego jak Notatnik, i około pół godziny. Zacznijmy!
Utwórz własny skrypt rejestrowania systemu Windows za pomocą AutoHotKey
Przed rozpoczęciem warto zainstalować na swoim komputerze AHK, gdyż będzie on pełnił rolę „parsera” dla skryptu. Jest to narzędzie, które pozwoli na „uruchomienie” Twojego skryptu.
Uwaga : Możesz także skompilować skrypt po jego ukończeniu, aby przekształcić go w prawdziwy program wykonywalny. Jednak wykracza to poza zakres tego artykułu.
Pobierz AutoHotKey z oficjalnej strony internetowej i zainstaluj go.

Wybierz opcję Nowy > Skrypt AutoHotKey
Uruchom swój ulubiony menedżer plików i uzyskaj dostęp do folderu, w którym chcesz zapisać skrypt. Następnie kliknij prawym przyciskiem myszy pustą lokalizację i wybierz Nowy > AutoHotKey Script .
Po zakończeniu nadszedł czas na napisanie właściwego scenariusza.
1. Zidentyfikuj niezbędne zmienne
Otwórz skrypt w swoim ulubionym edytorze. Możesz użyć czegoś prostego, takiego jak Notatnik dostarczany z systemem Windows, ale w tym artykule w tym samouczku zostanie użyty Notepad ++ . Notepad++ jest darmowy i lepiej przystosowany do tego celu, dlatego warto go wypróbować.
Pamiętaj, że nie powinieneś używać żadnych aplikacji typu Word czy Google Docs, gdyż mogą one mieć wpływ na formatowanie skryptu. Użyj edytora tekstu lub kodu.
Skrypt będzie zawierał podstawowe zalecane informacje na temat kompatybilności i wydajności. Zostaw je bez zmian i rozpocznij poniższy skrypt.
Zaczynać z:
AppLoggingRate = 10 ; Time interval (in seconds) between active window title captures.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
Zacznij od przypisania wartości „10” do AppLoggingRate , która będzie używana do obliczania czasu pomiędzy próbami logowania okna.
W przypadku użycia z funkcją uśpienia AHK wartość 1000 odpowiada w przybliżeniu jednej sekundzie. Zatem mnożąc ją przez AppLogingRate , zmienna SleepTime będzie „równa 10 sekundom”.
LogPath to ścieżka używana do przechowywania dzienników. W przykładzie użyto wartości %A_ScriptDir% , co oznacza „katalog, z którego uruchamiany jest skrypt”. Jeśli chcesz, możesz użyć pełnej ścieżki do innego folderu.
Na koniec ustaw LastActiveWindow na pusty i użyj później, aby sprawdzić, czy aktywne okno się zmieniło.
2. Monitoruj aktywne okna
Ponieważ chcemy na bieżąco monitorować, które okno jest aktywne, a jeśli się zmieni, zapisać tytuł i czas, będziemy musieli zastosować „pętlę”.
Jak sama nazwa wskazuje, pętla działa w sposób ciągły, powtarzając te same funkcje. Dzięki prostej składni AHK następujący „kod” jest stosunkowo łatwy do zrozumienia:
Loop
{
Sleep %SleepTime%
Msgbox, It Works!
}
Zdefiniuj pętlę, po prostu wpisując słowo „pętla”, a następnie zaznaczając jej początek „{” i koniec „}”. Wszystko w wierszach pomiędzy „{” i „}” będzie działać wiecznie, dopóki nie wyjdziesz ze skryptu.
Rozpocznij pętlę, czekając ( Sleep ) przez czas równy zmiennej SleepTime. Ta zmienna ułatwia kontrolę czasu. Zamiast samodzielnie edytować skrypt, możesz za pomocą tej zmiennej „powiedzieć” mu, ile sekund powinna trwać każda pętla.
Na koniec użyj Message Box , aby przetestować skrypt. Spróbuj zapisać i uruchomić go (kliknij dwukrotnie plik skryptu). Zobaczysz okno komunikatu „To działa!” (skrypt działa) po 10 sekundach.
Kliknij prawym przyciskiem myszy ikonę AHK na pasku zadań systemu Windows i zamknij skrypt, gdy pojawi się wystarczająca liczba okien komunikatów. Następnie wróć do edytora i zamień linię MsgBox na:
WinGetActiveTitle, ActiveWindow
To jest polecenie umożliwiające uzyskanie tytułu aktywnego okna. Pomiń dodatkową linię „StoreActiveWindow” , której użyto w przykładzie podczas pisania skryptów do testowania.
![Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey]()
Pobierz tytuł aktywnego okna i zapisz go w zmiennej
3. Uzyskaj aktualny czas i nazwę
Teraz następuje rdzeń logiki skryptu. Porównaj nazwę aktywnego okna z poprzednią i jeśli się różnią, „zrób coś”. Wszystko jest tak proste, jak to:
If ActiveWindow != %LastActiveWindow%
{
}
Biorąc pod uwagę powyższe, sprawdź, czy bieżące ActiveWindow różni się ( != ) od wartości zapisanej w zmiennej LastActiveWindow (która początkowo była ustawiona na pustą). Jeśli tak, AHK wykona kod pomiędzy { i } , który jest obecnie pusty.
Ustaw funkcję porównującą tytuł aktywnego okna z tytułem poprzedniego okna
Aby zmierzyć czas pracy okna, konieczne jest śledzenie zarówno daty, jak i godziny. Zachowane zostaną różne logi dla każdego dnia, zawierające datę w nazwie. Rejestrowana będzie nie tylko każda zmiana, ale także czas jej wystąpienia. Aby to zrobić, przypisz różne formaty czasu do zmiennych LogTime i LogFilename , za pomocą:
FormatTime, LogTime,, HH:mm:ss
FormatTime, LogFilename,, yyyy-MMM-dd
Dodaj te linie między nawiasami klamrowymi w „If ActiveWindow…” , aby AHK uruchomił je po wykryciu zmiany okna.
![Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey]()
Uzyskaj aktualny czas i przypisz go w dwóch zmiennych o różnych formatach
4. Format danych
Teraz przechwytujemy czas w dwóch różnie sformatowanych zmiennych, a także tytuł aktywnego okna. Jest jednak mały problem: tytuł okna może również zawierać niepożądane znaki. Możliwe jest usunięcie wszystkich znaków innych niż alfanumeryczne, korzystając z obsługi AHK dla RegEx, za pomocą:
LogWindow := Regexreplace(ActiveWindow, "[^a-zA-Z0-9]", " ")
Mając to na uwadze, „poprośmy” AHK o usunięcie wszystkich znaków ze zmiennej ActiveWindow, które nie pasują do znaków w nawiasach:
- Małe litery
- Wielka litera
- Liczby
Następnie przypisz wynik do zmiennej LogWindow.
![Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey]()
Wyczyść tytuł aktywnego okna za pomocą RegEx
Po ustawieniu wszystkich zmiennych i zebraniu wszystkich cennych danych można teraz sformatować plik dziennika i jego zawartość.
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
Poprzednio przypisywaliśmy bieżącą datę do zmiennej LogFilename. Dlatego w pierwszym wierszu dodaj do daty „_AppLog.md” , aby użyć jej jako nazwy pliku.
![Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey]()
Ustaw nazwę pliku dziennika
W drugiej linii połącz zmienną LogPath zdefiniowaną na początku jako miejsce docelowe pliku logu z nazwą pliku. Ich kombinacja to pełna ścieżka pliku dziennika, przypisana do zmiennej LogFile.
Przypiszmy równoważną wartość „pustej linii, Czas - Nazwa okna, dwóch kolejnych pustych linii, dzielnika i jeszcze jednej pustej linii, na wszelki wypadek” do zmiennej FileContent.
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
- Litera „n” nakazuje AHK wprowadzenie nowej linii (co jest równoznaczne z jednokrotnym naciśnięciem klawisza Enter ).
- Podczas wyświetlania w przeglądarce obsługującej format krzyżowy w dół jako separator pojawią się trzy myślniki.
- „% LogTime%” i „% LogWindow%” to zmienne przechowujące nazwę aktywnego okna i godzinę jego wykrycia.
![Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey]()
Określa zawartość pliku dziennika
5. Zaktualizuj pliki
Zdefiniowałeś co chcemy zapisać do pliku, jego ścieżkę i nazwę pliku. Pozostaje tylko faktyczny, prosty tekst w następujący sposób:
FileAppend, %FileContent%, %LogFile%
Dołącz wszystko ze zmiennej „FileContent” do pliku „LogFile”.
![Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey]()
Użyj funkcji Dołącz AHK, aby zaktualizować plik dziennika lub utwórz go od zera
Funkcja „append” doda „FileContent” do pliku, jeśli istnieje, ale także utworzy go od zera, jeśli plik nie istnieje.
Jest jeszcze jedno ostatnie ulepszenie: zastąp zawartość zmiennej LastActiveWindow aktualnie aktywnym oknem.
![Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey]()
Wstawia tytuł bieżącego aktywnego okna do zmiennej LastActiveWindow na potrzeby przyszłych testów
Aby to zrobić, skrypt powinien być w stanie wykryć następną zmianę okna.
LastActiveWindow = %ActiveWindow%
Po tym ostatnim dodatku rejestrator systemu Windows jest gotowy! Zapisz skrypt i uruchom go. Następnie sprawdź plik przeceny, plik ten pojawi się w folderze plików skryptu po 10 sekundach.
![Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey]()
Plik dziennika systemu Windows jest tworzony w tym samym katalogu, co skrypt
Przejmij kontrolę nad swoim czasem
Plik dziennika można otworzyć w dowolnym edytorze tekstu. Będzie jednak wyglądać lepiej, jeśli otworzysz go w edytorze kompatybilnym z Markdown. Na zrzucie ekranu widać logi w popularnym edytorze Typora.
![Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey Jak utworzyć aplikację do śledzenia czasu w systemie Windows za pomocą AutoHotKey]()
Plik przeceny wygenerowany przez skrypt jest ładowany w Typorze
Jest to łatwy sposób sprawdzenia, z których aplikacji korzystasz najczęściej i wymaga jedynie narzędzia takiego jak Notatnik.
Jeśli chcesz czegoś „bardziej wyjątkowego”, zawsze możesz „stylizować” dane wyjściowe rejestratora, aby zamiast tego utworzyć plik CSV. Jest to tak proste, jak dostosowanie zmiennej FileContent i rozszerzenia utworzonego pliku. Następnie możesz zaimportować takie pliki do aplikacji takich jak Excel, Google Calc, a nawet do narzędzi do śledzenia czasu innych firm.
Kompletny skrypt
#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