تبدأ عملك كل يوم مبكرًا حتى تتمكن من حل كل شيء خلال اليوم. ثم تتحقق من الساعة وهي الثالثة صباحًا ولكن عملك لم ينته بعد. إذن أين ذهب الوقت؟
يمكنك استخدام تطبيق مخصص لتتبع الوقت، ولكن قد يكون ذلك معقدًا ومحبطًا. بدلاً من ذلك، لماذا لا تنشئ تطبيقًا صغيرًا وبسيطًا خاصًا بك؟ يمكن لهذا التطبيق تتبع جميع النوافذ التي استخدمتها خلال اليوم. كل ما تحتاجه هو AutoHotKey، وهو معالج كلمات أساسي مثل Notepad، وحوالي نصف ساعة. هيا بنا نبدأ!
قم بإنشاء البرنامج النصي لتسجيل النوافذ الخاص بك باستخدام AutoHotKey
قبل البدء، يجب عليك تثبيت AHK على جهاز الكمبيوتر الخاص بك لأنه سيكون بمثابة "محلل" للبرنامج النصي. إنها الأداة التي ستسمح للبرنامج النصي الخاص بك "بالتشغيل".
ملاحظة : يمكنك أيضًا تجميع البرنامج النصي بعد الانتهاء لتحويله إلى برنامج حقيقي قابل للتنفيذ. ومع ذلك، فإن ذلك خارج نطاق هذه المقالة.
قم بتنزيل AutoHotKey من الموقع الرسمي وتثبيته.

حدد جديد > البرنامج النصي AutoHotKey
قم بتشغيل مدير الملفات المفضل لديك وقم بالوصول إلى المجلد الذي تريد تخزين البرنامج النصي فيه. بعد ذلك، انقر بزر الماوس الأيمن على موقع فارغ وحدد New > AutoHotKey Script .
بمجرد الانتهاء، حان الوقت لكتابة السيناريو الفعلي.
1. تحديد المتغيرات الضرورية
افتح البرنامج النصي في المحرر المفضل لديك. يمكنك استخدام شيء بسيط مثل برنامج Notepad الذي يأتي مع نظام التشغيل Windows، ولكن المقالة ستستخدم برنامج Notepad++ في هذا البرنامج التعليمي. برنامج Notepad++ مجاني ومكيف بشكل أفضل لهذا الغرض، لذا يجب عليك تجربته.
لاحظ أنه لا ينبغي عليك استخدام أي تطبيقات مثل Word أو Google Docs، والتي قد تؤثر على تنسيق البرنامج النصي. استخدم محرر النصوص أو الأكواد.
سيحتوي البرنامج النصي على بعض المعلومات الأساسية الموصى بها حول التوافق والأداء. اتركهم كما هم وابدأ البرنامج النصي أدناه.
ابدا ب:
AppLoggingRate = 10 ; Time interval (in seconds) between active window title captures.
SleepTime := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
ابدأ بتعيين القيمة "10" لـ AppLoggingRate ، والتي سيتم استخدامها لحساب الوقت بين محاولات تسجيل النوافذ.
عند استخدامها مع وظيفة النوم الخاصة بـ AHK، فإن الرقم 1000 يساوي تقريبًا ثانية واحدة. لذا، بضربه في AppLogingRate، ستجعل متغير SleepTime "يساوي 10 ثوانٍ".
LogPath هو المسار المستخدم لتخزين السجلات. يستخدم المثال القيمة %A_ScriptDir% ، والتي تُترجم إلى "الدليل الذي تقوم بتشغيل البرنامج النصي منه". يمكنك استخدام المسار الكامل إلى مجلد آخر إذا كنت تريد ذلك.
أخيرًا، قم بتعيين LastActiveWindow على الوضع الفارغ واستخدمه لاحقًا للتحقق مما إذا كانت النافذة النشطة قد تغيرت.
2. مراقبة النوافذ النشطة
نظرًا لأننا نريد المراقبة المستمرة للنافذة النشطة وإذا تغيرت، فسجل العنوان والوقت، وسيتعين علينا استخدام "حلقة".
كما يوحي الاسم، تعمل الحلقة بشكل مستمر، وتكرر نفس الوظيفة (الوظائف). بفضل بناء جملة AHK البسيط، من السهل نسبيًا فهم "الرمز" التالي:
Loop
{
Sleep %SleepTime%
Msgbox, It Works!
}
حدد حلقة ببساطة عن طريق كتابة كلمة "حلقة" ثم وضع علامة على بدايتها بـ "{" وانتهاء بـ "}". سيتم تشغيل كل شيء في السطور بين "{" و "}" إلى الأبد حتى تخرج من البرنامج النصي.
ابدأ الحلقة بالانتظار ( Sleep ) لمدة زمنية تساوي متغير SleepTime. هذا المتغير يجعل التحكم في الوقت أسهل. بدلاً من تحرير البرنامج النصي بنفسك، يمكنك "إخباره"، عبر هذا المتغير، بعدد الثواني التي يجب أن تستمر فيها كل حلقة.
وأخيرا، استخدم صندوق الرسائل لاختبار البرنامج النصي. حاول حفظه وتشغيله (انقر نقرًا مزدوجًا على ملف البرنامج النصي). سترى مربع رسالة يقول "إنه يعمل!" (السيناريو يعمل) بعد 10 ثواني.
انقر بزر الماوس الأيمن فوق رمز AHK في علبة Windows واخرج من البرنامج النصي عندما يكون لديك ما يكفي من مربعات الرسائل. ثم ارجع إلى المحرر واستبدل سطر MsgBox بما يلي:
WinGetActiveTitle, ActiveWindow
هذا هو الأمر للحصول على عنوان النافذة النشطة. احذف السطر الإضافي "StoreActiveWindow" الذي استخدمه المثال أثناء البرمجة النصية للاختبار.
![كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey]()
احصل على عنوان النافذة النشطة وقم بتخزينه في متغير
3. احصل على الوقت والاسم الحاليين
الآن يأتي جوهر منطق البرنامج النصي. قارن اسم النافذة النشطة بالاسم السابق، وإذا اختلفا، "افعل شيئًا". كل شيء بسيط مثل هذا:
If ActiveWindow != %LastActiveWindow%
{
}
بالنظر إلى ما سبق، تحقق مما إذا كان ActiveWindow الحالي مختلفًا ( != ) عن القيمة المخزنة في متغير LastActiveWindow (الذي تم تعيينه في البداية على أنه فارغ). إذا كان الأمر كذلك، فسيقوم AHK بتنفيذ الكود الموجود بين { و } ، وهو فارغ حاليًا.
اضبط الوظيفة لمقارنة عنوان النافذة النشطة والنافذة السابقة
من الضروري تتبع التاريخ والوقت لقياس مدة تشغيل النافذة. سيتم الاحتفاظ بسجلات مختلفة لكل يوم، باستخدام التاريخ الموجود باسمهم. لن يتم تسجيل كل تغيير فحسب، بل سيتم أيضًا تسجيل وقت حدوثه. للقيام بذلك، قم بتعيين تنسيقات زمنية مختلفة لمتغيرات LogTime و LogFilename ، باستخدام:
FormatTime, LogTime,, HH:mm:ss
FormatTime, LogFilename,, yyyy-MMM-dd
أضف تلك الأسطر بين الأقواس المتعرجة في "If ActiveWindow..." ، بحيث يقوم AHK بتشغيلها عندما يكتشف تغييرًا في النافذة.
![كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey]()
احصل على الوقت الحالي وقم بتعيينه في متغيرين بتنسيقات مختلفة
4. تنسيق البيانات
نحن الآن نلتقط الوقت في متغيرين منسقين بشكل مختلف، بالإضافة إلى عنوان النافذة النشطة. ومع ذلك، هناك مشكلة صغيرة: يمكن أن يحتوي عنوان النافذة أيضًا على أحرف غير مرغوب فيها. من الممكن إزالة كافة الأحرف غير الأبجدية الرقمية باستخدام دعم AHK لـ RegEx، من خلال:
LogWindow := Regexreplace(ActiveWindow, "[^a-zA-Z0-9]", " ")
مع أخذ ذلك في الاعتبار، دعونا "نطلب" من AHK إزالة كافة الأحرف من متغير ActiveWindow التي لا تتطابق مع ما هو موجود بين قوسين:
- أحرف صغيرة
- حرف كبير
- أعداد
ثم قم بتعيين النتيجة إلى متغير LogWindow.
![كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey]()
قم بتنظيف عنوان النافذة النشطة باستخدام RegEx
بعد تعيين كافة المتغيرات وجمع كافة البيانات القيمة، أنت الآن جاهز لتنسيق ملف السجل ومحتوياته.
LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%
في السابق، قمنا بتعيين التاريخ الحالي لمتغير LogFilename. لذلك، بالنسبة للسطر الأول، قم بإضافة "_AppLog.md" إلى التاريخ لاستخدامه كاسم للملف.
![كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey]()
قم بتعيين اسم ملف السجل
في السطر الثاني، قم بدمج المتغير LogPath ، المحدد في البداية كوجهة لملف السجل مع اسم الملف. مجموعتهم هي اسم المسار الكامل لملف السجل، المخصص للمتغير LogFile.
لنقم بتعيين القيمة المكافئة لـ "سطر فارغ، الوقت - اسم النافذة، وسطرين فارغين آخرين، وفاصل، وسطر فارغ آخر، من أجل حسن التدبير" لمتغير FileContent.
FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
- يخبر الحرف "n" AHK بإدخال سطر جديد (أي ما يعادل الضغط على Enter مرة واحدة).
- ستظهر ثلاث شرطات كفاصل عند عرضها في عارض متوافق.
- "% LogTime%" و"% LogWindow%" عبارة عن متغيرات تقوم بتخزين اسم النافذة النشطة ووقت اكتشافها.
![كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey]()
يحدد محتويات ملف السجل
5. تحديث الملفات
لقد حددت ما نريد كتابته في الملف، بالإضافة إلى المسار واسم الملف. ولم يبق إلا النص الفعلي البسيط كما يلي:
FileAppend, %FileContent%, %LogFile%
قم بإلحاق كل شيء في متغير "FileContent" بملف "LogFile".
![كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey]()
استخدم وظيفة الإلحاق الخاصة بـ AHK لتحديث ملف السجل أو إنشاء ملف من البداية
ستضيف وظيفة "الإلحاق" "FileContent" إلى الملف إذا كان موجودًا، ولكنها ستقوم أيضًا بإنشائه من البداية إذا كان الملف غير موجود.
هناك تعديل أخير: استبدل محتويات متغير LastActiveWindow بالنافذة النشطة حاليًا.
![كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey]()
يقوم بإدراج عنوان النافذة النشطة الحالية في متغير LastActiveWindow للاختبار المستقبلي
للقيام بذلك، يجب أن يكون البرنامج النصي قادرًا على اكتشاف التغيير التالي في النافذة.
LastActiveWindow = %ActiveWindow%
ومع هذه الإضافة الأخيرة، أصبح مسجل Windows جاهزًا! احفظ البرنامج النصي وقم بتشغيله. ثم، تحقق من ملف تخفيض السعر، وسيظهر هذا الملف في مجلد ملف البرنامج النصي بعد 10 ثوانٍ.
![كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey]()
يتم إنشاء ملف سجل Windows في نفس الدليل مثل البرنامج النصي
السيطرة على وقتك الخاص
يمكنك فتح ملف السجل باستخدام أي محرر نصوص. ومع ذلك، سيبدو أفضل إذا قمت بفتحه في محرر متوافق مع تخفيض السعر. في لقطة الشاشة، يمكنك رؤية السجل في محرر Typora الشهير.
![كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey كيفية إنشاء تطبيق لتتبع الوقت على نظام التشغيل Windows باستخدام AutoHotKey]()
يتم تحميل ملف تخفيض السعر الذي تم إنشاؤه بواسطة البرنامج النصي في Typora
إنها طريقة سهلة للتحقق من التطبيقات التي تستخدمها معظم الوقت ولا تتطلب سوى أداة مثل Notepad لاستخدامها.
إذا كنت تريد شيئًا "أكثر خصوصية"، فيمكنك دائمًا "تصميم" مخرجات المسجل لإنشاء ملف CSV بدلاً من ذلك. الأمر سهل مثل ضبط متغير FileContent وامتداد الملف الذي تم إنشاؤه. يمكنك بعد ذلك استيراد هذه الملفات إلى تطبيقات مثل Excel أو Google Calc أو حتى أدوات تتبع الوقت التابعة لجهات خارجية.
السيناريو الكامل
#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