Her güne en iyi niyetle, gençleşmiş, tüm görevlerinizi çözmeye hazır olarak başlarsınız. Sonra saate bakıyorsunuz, saat 03:00 ve merak etmeden edemiyorsunuz, bunca zaman nereye gitti?
Özel bir zaman izleme uygulaması kullanabilirsiniz, ancak bunlar can sıkıcı derecede karmaşık olabilir. Ayrıca, eğlence bunun neresinde?
Bunun yerine neden gün boyunca zaman geçirdiğiniz tüm pencereleri izleyebilecek kendi basit mini uygulamanızı yapmıyorsunuz? Yalnızca Notepad gibi temel bir kelime işlemci olan AutoHotKey'e ve yaklaşık yarım saate ihtiyacınız olacak. Hadi sıkışıp kalalım.
AutoHotKey Nedir?
AutoHotKey'in birincil amacı masaüstü otomasyonudur. Herhangi bir etkin pencereye tuş vuruşlarını ve fare hareketlerini gönderebileceğiniz, kısayol tuşları oluşturabileceğiniz veya tuşa basmaları değiştirebileceğiniz bir betik dilidir. Örneğin, bunu kullanabilirsiniz klavyenizdeki belirli tuşları devre dışı bırakın.
Ancak, bu hikayenin kısa versiyonudur ve AutoHotKey'in (kısaca AHK) neler yapabileceğini tam olarak temsil etmez. Bunun nedeni, ilk anlayışından bu yana evrim geçirmesidir ve şimdi tam bir betik dilidir. Bununla neler yapabileceğinizi "programlama Lite" olarak düşünebilirsiniz.
Bu nedenle, tam olarak bu makale için hedefimiz olarak belirlediğimiz gibi mini uygulamalar oluşturmak için AHK'yi kullanabilirsiniz. Bu makalede doğrudan AHK'ye dalacağımızı unutmayın, bu nedenle kontrol etmek isteyebilirsiniz. Yeni Başlayanlar için hızlı AutoHotKey Kılavuzumuz başlamadan önce.
AutoHotKey ile Kendi Pencere Günlüğü Komut Dosyanızı Oluşturma
Başlamadan önce, betiğiniz için "ayrıştırıcı" görevi göreceğinden bilgisayarınızda AHK kurulu olmalıdır. Komut dosyanızın "çalışmasına" izin verecek olan "motor"dur.
Not: Komut dosyanızı, tamamlandıktan sonra gerçek bir yürütülebilir programa dönüştürmek için derleyebilirsiniz. Ancak bu, bu makalenin kapsamı dışındadır.
AutoHotKey'i İndirin resmi sitesinden ve kurun.
Favori dosya yöneticinizi çalıştırın ve komut dosyanızı depolamak istediğiniz klasörü ziyaret edin. Ardından boş bir yere sağ tıklayın ve Yeni > AutoHotKey Komut Dosyası.
Bu yapıldıktan sonra, asıl 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 Not Defteri kadar basit bir şey kullanabilirsiniz, ancak biz bunu kullanacağız. not defteri++ bu kılavuz için. Notepad++ ücretsiz olduğundan ve bu amaç için daha iyi uyarlandığından, denemeye değer. Ayrıca kontrol ettiğinizden emin olun tüm klavye kısayollarıyla ilgili nihai kılavuzumuz kontrol ederken.
Biçimlendirmesini etkileyebilecek Word veya Google Dokümanlar gibi herhangi bir uygulama kullanmamanız gerektiğini unutmayın. Bir metin veya "kod" düzenleyici kullanın.
Komut dosyası, uyumluluk ve performans için önerilen bazı temel bilgileri zaten içerecektir. Onları olduğu gibi bırakın ve senaryonuzu onların altında başlatın.
İle başla:
AppLoggingRate = 10; Etkin pencere başlığı yakalamaları arasındaki zaman aralığı (saniye cinsinden).
Uyku Zamanı := Uygulama GünlüğüOranı * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
Pencere başlıklarını yakalamak arasındaki süreyi hesaplamak için kullanacağımız AppLoggingRate'e "10" değerini atayarak başlıyoruz.
AHK'nin Uyku işleviyle birlikte kullanıldığında 1000, kabaca bir saniyeye eşittir. Yani, onu AppLogingRate ile çarparak SleepTime değişkenini "on saniyeye eşit" yapıyoruz.
LogPath, günlüklerimizi depolamak istediğimiz yoldur. "Komut dosyasını çalıştırdığınız klasör" anlamına gelen %A_ScriptDir% değerini kullanıyoruz. İsterseniz başka bir klasörün tam yolunu kullanabilirsiniz.
Son olarak LastActiveWindow'u boş olarak ayarlıyoruz. Bunu daha sonra etkin pencerenin değişip değişmediğini kontrol etmek için kullanacağız.
2. Aktif Windows'u izleyin
Hangi pencerenin aktif olduğunu sürekli takip etmek istediğimizden ve eğer değişirse başlığını ve zamanını loglamak istediğimiz için "a loop" kullanmamız gerekecek.
Adından da anlaşılacağı gibi, bir döngü sürekli olarak çalışır ve aynı işlevi (ler) tekrar eder. AHK'nin basit sözdizimi sayesinde, aşağıdaki "kod"un nispeten açıklayıcı olduğuna inanıyoruz:
Döngü
{
Uyku %Uyku Süresi%
Mesaj Kutusu, Çalışıyor!
}
Basitçe "loop" kelimesini yazıp ardından başlangıcını "{" ile işaretleyerek ve "}" ile bitirerek bir döngü tanımlarız. "{" ve "}" arasındaki satırlardaki her şey, siz komut dosyasından çıkana kadar sürekli olarak çalışacaktır.
Döngüye SleepTime değişkenine eşit bir süre bekleyerek (Sleep) başlıyoruz. Kontrol süresini daha basit hale getirmek için önceki bölümde bir değişken olarak ayarladık. Komut dosyasının kendisini düzenlemek yerine, bu değişken aracılığıyla her döngünün kaç saniye sürmesi gerektiğini "söyleyebilirsiniz".
Son olarak, betiğimizi test etmek için bir Mesaj Kutusu kullanıyoruz. Kaydetmeyi ve çalıştırmayı deneyin (dosyasına çift tıklayın). "Çalışıyor!" Yazan bir mesaj kutusu göreceksiniz. on saniye sonra.
Windows tepsisindeki AHK simgesine sağ tıklayın ve yeterli mesaj kutunuz olduğunda komut dosyasından çıkın. Ardından editörünüze dönün ve MsgBox satırını şununla değiştirin:
WinGetActiveTitle, ActiveWindow
Bu, aktif pencerenin başlığını almak için kullanılan komuttur. Test için komut dosyasını yazarken kullandığımız fazladan "StoreActiveWindow" satırını yok sayın.
3. Geçerli Saati ve Adı Alın
Şimdi betiğin mantığının temel kısmı geliyor. Etkin pencerenin adını öncekiyle karşılaştırmasını ve farklıysa "bir şeyler yapmasını" istiyoruz. Aşağıdaki kadar basit:
ActiveWindow != %LastActiveWindow% ise
{
}
Yukarıdakilerle, o anda ActiveWindow'un LastActiveWindow değişkeninde (başlangıçta boş olarak ayarladığımız) depolanan değerden farklı (!=) olup olmadığını kontrol ederiz. Eğer öyleyse, AHK şu an için boş olan { ve } arasındaki kodu çalıştıracaktır.
Bir pencerenin ne kadar süredir aktif olduğunu ölçmek için hem tarihi hem de saati takip etmemiz gerekiyor. Her gün için adlarındaki tarihi kullanarak farklı günlükler tutacağız. Ve sadece her pencere değişikliğini değil, aynı zamanda ne zaman oldu. Bunun için LogTime ve LogFilename değişkenlerine aşağıdakilerle farklı zaman biçimleri atayacağız:
FormatTime, LogTime,, SS: aa: ss
FormatTime, LogFilename,, yyyy-MMM-dd
AHK'nin bir pencere değişikliği algıladığında çalıştırmasını sağlamak için, "ActiveWindow..." altındaki küme parantezleri arasına bu satırları ekleyin.
4. Veri Biçimlendirme
Etkin pencerenin başlığının yanı sıra iki farklı biçimlendirilmiş değişkende zamanı yakaladık. Ancak küçük bir sorun var: Bir pencerenin başlığı istemediğimiz karakterleri de içerebilir. AHK'nin RegEx desteğini kullanarak alfasayısal olmayan tüm karakterleri aşağıdakilerle kaldırabiliriz:
LogWindow := Regexreplace (ActiveWindow, "[^a-zA-Z0-9]", " ")
Bununla, AHK'ye ActiveWindow değişkeninden parantez içindekilerle eşleşmeyen tüm karakterleri kaldırmasını "söyleriz":
- Küçük harfler
- Büyük harfler
- sayılar
Ardından sonucu LogWindow değişkenine atarız.
Tüm değişkenler ayarlandığında ve tüm değerli veriler alındığında, günlük dosyamızı ve içeriğini biçimlendirmeye hazırız.
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
Geçerli tarihi daha önce LogFilename değişkenine atamıştık. Böylece ilk satırda sadece "_AppLog.md" dosyasını dosya adı olarak kullanmak için tarihe eklemek istediğimizi belirtiyoruz.
İkinci satırda ise başta loglarımız için hedef olarak tanımladığımız LogPath değişkenini dosya ismi ile birleştiriyoruz. Bunların birleşimi, LogFile değişkenine atanan günlüğün tam yol adıdır.
FileContent değişkenine "boş satır, Zaman - Pencerenin Adı, iki boş satır, bir bölücü ve iyi bir ölçüm için başka bir boş satır" eşdeğerini atayalım.
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
- "`n", AHK'ye yeni bir satır girmesini söyler (Enter'a bir kez basmaya eşdeğer).
- Üç çizgi, markdown uyumlu bir görüntüleyicide sunulduğunda bir ayırıcı olarak görünecektir.
- "%LogTime%" ve "%LogWindow%", etkin pencerenin adını ve algılandığı zamanı kaydettiğimiz değişkenlerdir.
5. Dosyayı Güncelle
Dosyamıza ne yazmak istediğimizi tanımladık, yolunu ve dosya adını biliyoruz. Geriye kalan tek şey, aşağıdaki kadar kolay olan gerçek yazıdır:
FileAppend, %FileContent%, %LogFile%
Neredeyse düz İngilizce kadar basit: "FileContent" değişkenindeki her şeyi "LogFile" dosyasına ekliyoruz.
"Apppend" işlevi, varsa dosyaya "FileContent" ekler, ancak yoksa onu sıfırdan oluşturur.
Ama bekleyin, son bir ince ayar daha var: LastActiveWindow değişkeninin içeriğini o anda etkin olan pencereyle değiştirmek.
Bununla, komut dosyası algılayabilecek sonraki pencere değişikliği.
LastActiveWindow = %ActiveWindow%
Ve bu son eklemeyle, pencere kaydediciniz hazır! Kaydedin ve çalıştırın. Ardından, on saniye sonra komut dosyanızın klasöründe görünecek olan işaretleme dosyasına bakın.
Zamanında Ustalaş
Günlük dosyanızı herhangi bir metin düzenleyiciyle açabilirsiniz. Yine de, onu markdown uyumlu bir düzenleyicide açarsanız daha güzel görünecektir. Ekran görüntüsünde, popüler Typora düzenleyicideki günlüğünüzü görebilirsiniz.
En çok zaman harcadığınız uygulamaları kontrol etmenin kolay bir yolu ve kullanmak için yalnızca Not Defteri gibi bir şeye ihtiyacınız var.
"Daha fazla" bir şey istiyorsanız, bunun yerine CSV dosyaları oluşturmak için günlükçünüzün çıktısını her zaman "biçimlendirebilirsiniz". FileContent değişkenini ve oluşturulan dosyanın uzantısını değiştirmek kadar kolaydır. Daha sonra bu tür dosyaları Excel, Google Calc ve hatta üçüncü taraf zaman izleyicileri gibi uygulamalara aktarabilirsiniz.
Tam komut dosyası:
#Env Yok; Gelecekteki AutoHotkey sürümleriyle performans ve uyumluluk için önerilir.
; #Uyarmak; Sık karşılaşılan hataları tespit etmeye yardımcı olması için uyarıları etkinleştirin.
SendMode Girişi; Üstün hızı ve güvenilirliği nedeniyle yeni komut dosyaları için önerilir.
SetWorkingDir %A_ScriptDir%; Tutarlı bir başlangıç dizini sağlar.
; Değişkenler
;
AppLoggingRate = 10; Etkin pencere başlığı yakalamaları arasındaki zaman aralığı (saniye cinsinden).
Uyku Zamanı := Uygulama GünlüğüOranı * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
; Mantık
;
Döngü
{
Uyku %Uyku Süresi%
WinGetActiveTitle, ActiveWindow
StoreActiveWindow = %ActiveWindow%
ActiveWindow != %LastActiveWindow% ise
{
FormatTime, LogTime,, SS: aa: ss
FormatTime, LogFilename,, yyyy-AA-gg
LogWindow := Regexreplace (ActiveWindow, "[^a-zA-Z0-9]", " ")
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
uyku 50
FileAppend, %FileContent%, %LogFile%
LastActiveWindow = %ActiveWindow%
}
}
çıkış
AutoHotkey, özel Windows kısayolları, makrolar ve daha fazlasını yapmanızı sağlar! İşte başlamanıza yardımcı olacak bazı kullanışlı AutoHotkey komut dosyaları.
Sonrakini Oku
- pencereler
- üretkenlik
- pencereler
- OtomatikKısayol tuşu
- Zaman yönetimi
- Verimlilik Püf Noktaları
OK'nin gerçek hayatı, ilk bilgisayarını, bir Commodore 128'i aldığında, yaklaşık 10 yaşında başladı. O zamandan beri, 7/24 yazarak klavye tuşlarını eritiyor ve The Word Of Tech'i dinleyecek kadar ilgilenen herkese yaymaya çalışıyor. Daha doğrusu okuyun.
Haber bültenimize abone ol
Teknik ipuçları, incelemeler, ücretsiz e-kitaplar ve özel fırsatlar için bültenimize katılın!
Abone olmak için buraya tıklayın