Gün içinde her şeyi çözebilmek için her gün işe erken başlıyorsunuz. Daha sonra saate bakıyorsunuz, saat gecenin 3'ü ama işiniz hâlâ bitmedi. Peki zaman nereye gitti?
Özel bir zaman takip uygulaması kullanabilirsiniz ancak bunlar karmaşık ve sinir bozucu olabilir. Bunun yerine neden kendi basit küçük uygulamanızı yaratmıyorsunuz? Bu uygulama gün içinde kullandığınız tüm pencereleri takip edebilir. Sadece Notepad gibi temel bir kelime işlemci olan AutoHotKey'e ve yaklaşık yarım saate ihtiyacınız var. Başlayalım!
AutoHotKey ile kendi Windows günlük kaydı komut dosyanızı oluşturun
Başlamadan önce AHK'yi bilgisayarınıza kurmalısınız çünkü komut dosyası için bir "ayrıştırıcı" görevi görecektir. Komut dosyanızın "çalışmasına" izin verecek araçtır.
Not : Komut dosyasını tamamladıktan sonra gerçek bir çalıştırılabilir programa dönüştürmek için de derleyebilirsiniz. Ancak bu, bu makalenin kapsamı dışındadır.
AutoHotKey'i resmi web sitesinden indirin ve yükleyin.

Yeni > AutoHotKey Komut Dosyasını seçin
Favori dosya yöneticinizi çalıştırın ve betiği saklamak istediğiniz klasöre erişin. Ardından boş bir konuma sağ tıklayın ve Yeni > AutoHotKey Komut Dosyası seçeneğini seçin .
Tamamlandığında, gerçek senaryoyu yazmanın zamanı geldi.
1. Gerekli değişkenleri tanımlayın
Komut dosyasını favori düzenleyicinizde açın. Windows ile birlikte gelen Notepad gibi basit bir şey kullanabilirsiniz, ancak makale bu eğitim için Notepad++ kullanacaktır . Notepad++ ücretsizdir ve bu amaç için daha iyi uyarlanmıştır, bu yüzden denemelisiniz.
Komut dosyasının biçimlendirmesini etkileyebilecek Word veya Google Dokümanlar gibi uygulamaları kullanmamanız gerektiğini unutmayın. Bir metin veya kod düzenleyici kullanın.
Komut dosyası, uyumluluk ve performans hakkında önerilen bazı temel bilgileri içerecektir. Bunları olduğu gibi bırakın ve aşağıdaki betiği başlatın.
İle başlar:
AppLoggingRate = 10 ; Time interval (in seconds) between active window title captures.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
Pencere günlüğe kaydetme girişimleri arasındaki süreyi hesaplamak için kullanılacak olan AppLoggingRate öğesine "10" değerini atayarak başlayın .
AHK'nın Uyku fonksiyonuyla birlikte kullanıldığında 1000 kabaca bir saniyeye eşittir. Yani bunu AppLogingRate ile çarparak SleepTime değişkenini "10 saniyeye eşit" hale getireceksiniz.
LogPath, günlükleri depolamak için kullanılan yoldur. Örnek, "komut dosyasını çalıştırdığınız dizin" anlamına gelen %A_ScriptDir% değerini kullanıyor. İsterseniz başka bir klasörün tam yolunu kullanabilirsiniz.
Son olarak LastActiveWindow'u boş olarak ayarlayın ve daha sonra aktif pencerenin değişip değişmediğini kontrol etmek için kullanın.
2. Aktif pencereleri izleyin
Hangi pencerenin aktif olduğunu sürekli takip etmek ve değişirse başlığı ve zamanı kaydetmek istediğimiz için bir “döngü” kullanmak zorunda kalacağız.
Adından da anlaşılacağı gibi, bir döngü sürekli olarak aynı işlevi/işlevleri tekrarlayarak çalışır. AHK'nin basit sözdizimi sayesinde aşağıdaki "kod"un anlaşılması nispeten kolaydır:
Loop
{
Sleep %SleepTime%
Msgbox, It Works!
}
Basitçe "döngü" kelimesini yazıp ardından başlangıcını "{" ve sonunu "}" ile işaretleyerek bir döngü tanımlayın. "{" ve "}" arasındaki satırlardaki her şey siz komut dosyasından çıkana kadar sonsuza kadar çalışacaktır.
Döngüyü, SleepTime değişkenine eşit bir süre boyunca ( Sleep ) bekleyerek başlatın . Bu değişken zaman kontrolünü kolaylaştırır. Betiği kendiniz düzenlemek yerine, bu değişken aracılığıyla ona her döngünün kaç saniye sürmesi gerektiğini "söyleyebilirsiniz".
Son olarak betiği test etmek için Mesaj Kutusunu kullanın . Kaydetmeyi ve çalıştırmayı deneyin (komut dosyasına çift tıklayın). "Çalışıyor!" yazan bir mesaj kutusu göreceksiniz. (senaryo çalışıyor) 10 saniye sonra.
Windows tepsisindeki AHK simgesine sağ tıklayın ve yeterli mesaj kutunuz olduğunda komut dosyasından çıkın. Daha sonra editöre geri dönün ve MsgBox satırını şununla değiştirin:
WinGetActiveTitle, ActiveWindow
Bu, aktif pencerenin başlığını alma komutudur. Örneğin test için komut dosyası yazarken kullandığı fazladan "StoreActiveWindow" satırını atlayın .
![AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur]()
Etkin pencerenin başlığını alın ve onu bir değişkende saklayın
3. Geçerli saati ve adı alın
Şimdi senaryo mantığının özü geliyor. Etkin pencerenin adını öncekiyle karşılaştırın ve eğer farklıysa "bir şeyler yapın". Her şey bu kadar basit:
If ActiveWindow != %LastActiveWindow%
{
}
Yukarıdakiler göz önüne alındığında, geçerli ActiveWindow'un LastActiveWindow değişkeninde (başlangıçta boş olarak ayarlanmış olan) depolanan değerden farklı ( != ) olup olmadığını kontrol edin. Eğer öyleyse, AHK şu anda boş olan { ile } arasındaki kodu çalıştıracaktır .
Etkin pencerenin başlığını önceki pencereyle karşılaştıracak işlevi ayarlayın
Bir pencerenin çalışma süresini ölçmek için hem tarihi hem de saati takip etmek gerekir. Her gün için farklı günlükler, kendi adlarında tarih kullanılarak saklanacaktır. Yalnızca her değişiklik değil, gerçekleştiği zaman da kaydedilecektir. Bunu yapmak için LogTime ve LogFilename değişkenlerine aşağıdakilerle farklı zaman biçimleri atayın:
FormatTime, LogTime,, HH:mm:ss
FormatTime, LogFilename,, yyyy-MMM-dd
"If ActiveWindow..." içindeki küme parantezlerinin arasına bu satırları ekleyin , böylece AHK bir pencere değişikliği algıladığında bunları çalıştırır.
![AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur]()
Geçerli saati alın ve onu farklı formatlardaki iki değişkene atayın
4. Veri formatı
Artık zamanı, etkin pencerenin başlığının yanı sıra iki farklı biçimlendirilmiş değişkende yakalıyoruz. Ancak küçük bir sorun var: Pencerenin başlığı istenmeyen karakterler de içerebilir. AHK'nın RegEx desteğini kullanarak alfasayısal olmayan tüm karakterleri kaldırmak mümkündür:
LogWindow := Regexreplace(ActiveWindow, "[^a-zA-Z0-9]", " ")
Bunu aklımızda tutarak, AHK'dan ActiveWindow değişkenindeki parantez içindekilerle eşleşmeyen tüm karakterleri kaldırmasını "isteyelim":
- Küçük harf
- Büyük harf
- Sayılar
Daha sonra sonucu LogWindow değişkenine atayın.
![AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur]()
Etkin pencerenin başlığını RegEx ile temizleyin
Tüm değişkenler ayarlandığında ve tüm değerli veriler toplandığında artık günlük dosyasını ve içeriğini biçimlendirmeye hazırsınız.
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
Daha önce LogFilename değişkenine güncel tarihi atamıştık . Bu nedenle, ilk satırda dosya adı olarak kullanmak için tarihe "_AppLog.md" ekleyin.
![AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur]()
Günlük dosyası adını ayarlayın
İkinci satırda, başlangıçta günlük dosyasının hedefi olarak tanımlanan LogPath değişkenini dosya adıyla birleştirin. Bunların kombinasyonu, LogFile değişkenine atanan günlük dosyasının tam yol adıdır .
FileContent değişkenine "boş satır, Zaman - Pencerenin Adı, iki boş satır daha, bir bölücü ve başka bir boş satır" eşdeğer değerini atayalım .
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
- "n" harfi AHK'ya yeni bir satır girmesini söyler ( Enter'a bir kez basmaya eşdeğerdir).
- Çapraz uyumlu bir görüntüleyicide görüntülendiğinde ayırıcı olarak üç çizgi görünecektir.
- "% LogTime%" ve "% LogWindow%", etkin pencerenin adını ve algılandığı zamanı saklayan değişkenlerdir.
![AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur]()
Günlük dosyasının içeriğini belirler
5. Dosyaları güncelleyin
Dosyaya ne yazmak istediğimizi, yolunu ve dosya adını tanımladınız. Geriye kalan tek şey aşağıdaki gibi gerçek, basit metindir:
FileAppend, %FileContent%, %LogFile%
"FileContent" değişkenindeki her şeyi "LogFile" dosyasına ekleyin .
![AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur]()
Günlük dosyasını güncellemek veya sıfırdan bir tane oluşturmak için AHK'nin Ekle işlevini kullanın
"Append" işlevi, varsa dosyaya "FileContent" ekleyecektir, ancak dosya yoksa onu sıfırdan da oluşturacaktır.
Son bir ayar daha var: LastActiveWindow değişkeninin içeriğini o anda etkin olan pencereyle değiştirin.
![AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur]()
Gelecekteki testler için geçerli etkin pencerenin başlığını LastActiveWindow değişkenine ekler
Bunu yapmak için betiğin bir sonraki pencere değişikliğini algılayabilmesi gerekir.
LastActiveWindow = %ActiveWindow%
Ve bu son eklemeyle birlikte Windows kaydedici hazır! Komut dosyasını kaydedin ve çalıştırın. Daha sonra işaretleme dosyasını kontrol edin, bu dosya 10 saniye sonra komut dosyası klasöründe görünecektir.
![AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur]()
Windows günlük dosyası komut dosyasıyla aynı dizinde oluşturulur
Kendi zamanınızın kontrolünü elinize alın
Günlük dosyasını herhangi bir metin düzenleyiciyle açabilirsiniz. Ancak markdown uyumlu bir düzenleyicide açarsanız daha iyi görünecektir. Ekran görüntüsünde popüler Typora düzenleyicisindeki günlüğü görebilirsiniz.
![AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur]()
Komut dosyası tarafından oluşturulan işaretleme dosyası Typora'ya yüklenir
Bu, en çok hangi uygulamaları kullandığınızı kontrol etmenin kolay bir yoludur ve yalnızca Not Defteri gibi bir aracın kullanılmasını gerektirir.
"Daha özel" bir şey istiyorsanız, bunun yerine bir CSV dosyası oluşturmak için kaydedicinin çıktısını her zaman "biçimlendirebilirsiniz". FileContent değişkenini ve oluşturulan dosyanın uzantısını ayarlamak kadar kolaydır . Daha sonra bu tür dosyaları Excel, Google Calc gibi uygulamalara ve hatta üçüncü taraf zaman izleyicilere aktarabilirsiniz.
Senaryoyu tamamla
#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