AutoHotKey ile Windowsta zaman izleme uygulaması nasıl oluşturulur

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.

AutoHotKey ile Windows'ta zaman izleme uygulaması nasıl oluşturulur

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

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

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

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

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

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

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

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

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

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

Yorum bırak

Windows 10da ekranın sağ köşesindeki telif hakkı isteği bildirimi nasıl kaldırılır

Windows 10da ekranın sağ köşesindeki telif hakkı isteği bildirimi nasıl kaldırılır

Ekranın sağ köşesinde bir Windows 10 etkinleştirme bildirimi görüyor musunuz? Bu makale, Windows 10'da telif hakkı isteği bildirimini nasıl sileceğiniz konusunda size rehberlik edecektir.

Windows 10 build 14393.222nin nasıl kurulacağına ilişkin Adan Zye talimatlar

Windows 10 build 14393.222nin nasıl kurulacağına ilişkin Adan Zye talimatlar

Microsoft yakın zamanda Windows 10 PC kullanıcıları için Derleme 14393.222 adlı en son toplu güncelleştirmeyi yayımladı. Windows 10 için yayımlanan bu güncelleme, esas olarak kullanıcı geri bildirimlerine dayalı olarak hataları düzeltiyor ve işletim sisteminin performans deneyimini geliştiriyor.

Bilgisayar ağınızı Bastion ana bilgisayarıyla yalnızca 3 adımda koruyun

Bilgisayar ağınızı Bastion ana bilgisayarıyla yalnızca 3 adımda koruyun

Yerel ağınızda harici erişime ihtiyaç duyan bilgisayarlarınız var mı? Ağınız için bir kale ana bilgisayarını ağ geçidi denetleyicisi olarak kullanmak iyi bir çözüm olabilir.

Windows 10daki tüm olay günlüklerini hızla temizlemenin 3 yolu

Windows 10daki tüm olay günlüklerini hızla temizlemenin 3 yolu

Bazen eski olay günlüklerinin tamamını bir kerede silmeniz gerekebilir. Bu kılavuzda Quantrimang.com, Windows 10 Olay Görüntüleyicisi'ndeki tüm olay günlüklerini hızlı bir şekilde silmenin 3 yolunu gösterecektir.

Klavyeniz kullanılamıyorsa Windows tuşu nasıl oluşturulur

Klavyeniz kullanılamıyorsa Windows tuşu nasıl oluşturulur

IBM Model M gibi fiziksel bir Windows tuşu içermeyen eski bir klasik klavye kullanmayı tercih ederseniz, sık kullanmadığınız bir anahtarı ödünç alarak daha fazlasını eklemenin kolay bir yöntemi vardır.

Windows 10da şeffaf arka plan modu nasıl oluşturulur

Windows 10da şeffaf arka plan modu nasıl oluşturulur

WindowTop, Windows 10 bilgisayarlarda çalışan tüm uygulama pencerelerini ve programlarını karartma özelliğine sahip bir araçtır.Ya da pencerelerde koyu arka planlı bir arayüz kullanabilirsiniz.

Sahte IP yöntemleri anonim olarak erişmenize yardımcı olur

Sahte IP yöntemleri anonim olarak erişmenize yardımcı olur

Daha önceki birçok makalemizde çevrimiçi ortamda anonim kalmanın son derece önemli olduğundan bahsetmiştik. Özel bilgilerin her yıl sızdırılması, çevrimiçi güvenliği giderek daha gerekli hale getiriyor. Sanal IP adreslerini kullanmamızın nedeni de budur. Aşağıda sahte IP'ler oluşturma yöntemlerini öğreneceğiz!

Windows 8 görev çubuğunda dil çubuğunu nasıl kapatılır

Windows 8 görev çubuğunda dil çubuğunu nasıl kapatılır

Windows 8'deki dil çubuğu, masaüstü ekranında otomatik olarak görüntülemek için tasarlanmış minyatür bir dil araç çubuğudur. Ancak, birçok kişi bu dil çubuğunu görev çubuğuna gizlemek istiyor.

Linksysten İnternet bağlantı hızını optimize etmeye yönelik ipuçları

Linksysten İnternet bağlantı hızını optimize etmeye yönelik ipuçları

İnternet hızını en üst düzeye çıkarmak, ağ bağlantınızı optimize etmek için çok önemlidir. Bilgisayarları, internete hazır TV'leri, oyun konsollarını vb. kullanarak en iyi eğlence ve iş deneyimini yaşayabilirsiniz.

Linksys yönlendirici için WEP, WPA, WPA2 nasıl kurulur

Linksys yönlendirici için WEP, WPA, WPA2 nasıl kurulur

Kablosuz bağlantı günümüzde bir zorunluluktur ve bu nedenle dahili ağınızın güvenliğini sağlamak için kablosuz güvenlik şarttır.