تبدأ كل يوم مع أفضل النوايا ، متجددًا ، وعلى استعداد للتعامل مع جميع مهامك. بعد ذلك ، تتحقق من الوقت ، الساعة 03:00 صباحًا ، ولا يسعك إلا أن تتساءل ، أين ذهب كل هذا الوقت؟

يمكنك استخدام تطبيق مخصص لتتبع الوقت ، ولكن قد يكون ذلك معقدًا بشكل مزعج. بالإضافة إلى ذلك ، أين المتعة في ذلك؟

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

ما هو AutoHotKey؟

الغرض الأساسي من AutoHotKey هو أتمتة سطح المكتب. إنها لغة برمجة يمكنك من خلالها إرسال ضغطات المفاتيح وحركات الماوس إلى أي نافذة نشطة أو إنشاء مفاتيح اختصار أو تعديل ضغطات المفاتيح. يمكنك ، على سبيل المثال ، استخدامه تعطيل مفاتيح محددة على لوحة المفاتيح الخاصة بك.

ومع ذلك ، فهذه هي النسخة القصيرة من القصة ولا تمثل حقًا ما يمكن أن يفعله AutoHotKey (AHK للاختصار). هذا لأنها تطورت منذ تصورها الأولي وهي الآن لغة برمجة نصية كاملة. يمكنك التفكير في ما يمكنك فعله به على أنه "برمجة لايت".

instagram viewer

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

إنشاء البرنامج النصي الخاص بك لتسجيل النوافذ باستخدام AutoHotKey

قبل أن نبدأ ، يجب أن يكون AHK مثبتًا على جهاز الكمبيوتر الخاص بك لأنه سيكون بمثابة "المحلل اللغوي" للبرنامج النصي الخاص بك. إنه "المحرك" الذي سيسمح للبرنامج النصي "بالتشغيل".

ملاحظة: يمكنك أيضًا تجميع البرنامج النصي الخاص بك بعد أن يتم تحويله إلى برنامج قابل للتنفيذ الفعلي. ومع ذلك ، هذا خارج نطاق هذه المقالة.

تنزيل AutoHotKey من موقعها الرسمي وتثبيته.

أطلق مدير الملفات المفضل لديك وقم بزيارة المجلد الذي تريد تخزين البرنامج النصي فيه. ثم ، انقر بزر الماوس الأيمن فوق مكان فارغ ، واختر جديد> برنامج نصي AutoHotKey.

بمجرد الانتهاء من ذلك ، حان الوقت لكتابة النص الفعلي.

1. حدد المتغيرات الضرورية

افتح البرنامج النصي في المحرر المفضل لديك. يمكنك استخدام شيء بسيط مثل Notepad الذي يأتي مع Windows ، لكننا سنستخدمه برنامج Notepad ++ لهذا الدليل. نظرًا لأن Notepad ++ مجاني ومصمم بشكل أفضل لهذا الغرض ، فإنه يستحق تجربته. تأكد من التحقق أيضًا دليلنا النهائي لجميع اختصارات لوحة المفاتيح أثناء التحقق من ذلك.

لاحظ أنه لا يجب استخدام أي تطبيق مثل Word أو محرر مستندات Google ، مما قد يؤثر على تنسيقه. استخدم محرر نص أو "رمز".

سيحتوي البرنامج النصي بالفعل على بعض الأساسيات الموصى بها للتوافق والأداء. اتركها كما هي ، وابدأ السيناريو الخاص بك تحتها.

أبدا ب:

AppLoggingRate = 10 ، الفاصل الزمني (بالثواني) بين لقطات عنوان النافذة النشطة.
SleepTime: = AppLoggingRate * 1000
LogPath =٪ A_ScriptDir٪
LastActiveWindow =

نبدأ بتعيين القيمة "10" إلى AppLoggingRate ، والتي سنستخدمها لحساب الوقت بين التقاط عناوين النوافذ.

عند استخدامها مع وظيفة النوم AHK ، فإن 1000 تساوي تقريبًا ثانية. لذلك ، بضربها في AppLogingRate ، نجعل المتغير SleepTime "يساوي عشر ثوانٍ".

LogPath هو المسار الذي نريد تخزين سجلاتنا فيه. نحن نستخدم القيمة٪ A_ScriptDir٪ ، والتي تُترجم إلى "المجلد الذي تقوم بتشغيل البرنامج النصي منه". يمكنك استخدام المسار الكامل لمجلد آخر إذا أردت.

أخيرًا ، قمنا بتعيين LastActiveWindow على فارغ. سنستخدم هذا لاحقًا للتحقق مما إذا كانت النافذة النشطة قد تغيرت.

2. مراقبة ويندوز النشط

نظرًا لأننا نرغب في تتبع أي نافذة نشطة بشكل مستمر ، وإذا تغيرت ، فقم بتسجيل عنوانها ووقتها ، فسيتعين علينا استخدام "حلقة".

كما يشير اسمها ، تعمل الحلقة باستمرار ، وتكرر نفس الوظيفة (الوظائف). بفضل بناء جملة AHK المباشر ، نعتقد أن "الكود" التالي واضح بذاته نسبيًا:

حلقة
{
النوم٪ SleepTime٪
Msgbox ، إنه يعمل!
}

نحدد الحلقة ببساطة عن طريق كتابة كلمة "حلقة" ثم تعليم بدايتها بـ "{" وتنتهي بـ "}". كل شيء في السطور بين "{" و "}" سيعمل بشكل دائم حتى تخرج من البرنامج النصي.

نبدأ الحلقة بالانتظار (Sleep) لفترة من الوقت تساوي متغير SleepTime. قمنا بتعيينه كمتغير في الفصل السابق لجعل التحكم في الوقت أكثر وضوحًا. بدلاً من تحرير النص نفسه ، يمكنك "إخباره" ، من خلال هذا المتغير ، بعدد الثواني التي يجب أن تدوم كل حلقة.

أخيرًا ، نستخدم صندوق الرسائل لاختبار البرنامج النصي الخاص بنا. حاول حفظه وتشغيله (انقر نقرًا مزدوجًا على ملفه). سترى مربع رسالة نصه "إنه يعمل!" بعد عشر ثوان.

انقر بزر الماوس الأيمن على أيقونة AHK في علبة Windows واخرج من البرنامج النصي عندما يكون لديك عدد كافٍ من مربعات الرسائل. بعد ذلك ، ارجع إلى المحرر الخاص بك ، واستبدل سطر MsgBox بـ:

WinGetActiveTitle ، ActiveWindow

هذا هو الأمر للحصول على عنوان النافذة النشطة. تجاهل سطر "StoreActiveWindow" الإضافي الذي استخدمناه أثناء كتابة البرنامج النصي للاختبار.

3. احصل على الوقت والاسم الحاليين

الآن يأتي الجزء الأساسي من منطق النص. نريده أن يقارن اسم النافذة النشطة بالاسم السابق ، وإذا كانا مختلفين ، "افعل شيئًا". الأمر بسيط كالآتي:

إذا كان ActiveWindow! =٪ LastActiveWindow٪
{
}

باستخدام ما سبق ، نتحقق مما إذا كان ActiveWindow حاليًا مختلفًا (! =) عن القيمة المخزنة في متغير LastActiveWindow (الذي قمنا بتعيينه في البداية على فارغ). إذا كان الأمر كذلك ، فسيقوم AHK بتنفيذ الكود بين {و} ، والذي أصبح فارغًا في الوقت الحالي.

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

FormatTime ، LogTime ، HH: mm: ss
FormatTime ، LogFilename ، yyyy-MMM-dd

أضف هذه الأسطر بين الأقواس المتعرجة ضمن "If ActiveWindow ..." ، حتى يقوم AHK بتشغيلها عندما يكتشف تغييرًا في النافذة.

4. تنسيق البيانات

لقد حصلنا على الوقت في متغيرين مختلفين التنسيق ، بالإضافة إلى عنوان النافذة النشطة. ومع ذلك ، هناك مشكلة صغيرة: قد يحتوي عنوان النافذة أيضًا على أحرف لا نريدها. يمكننا إزالة جميع الأحرف غير الأبجدية الرقمية باستخدام دعم AHK لـ RegEx ، مع:

LogWindow: = Regexreplace (ActiveWindow، "[^ a-zA-Z0-9]"، "")

بهذا ، "نقول" AHK لإزالة جميع الأحرف من متغير ActiveWindow التي لا تتطابق مع ما هو موجود بين قوسين:

  • أحرف صغيرة
  • الأحرف الكبيرة
  • أعداد

ثم نقوم بتعيين النتيجة إلى المتغير LogWindow.

مع تعيين جميع المتغيرات وجميع البيانات القيمة التي تم الحصول عليها ، نحن على استعداد لتنسيق ملف السجل الخاص بنا ومحتوياته.

LogFilename =٪ LogFilename٪ _AppLog.md
ملف السجل =٪ LogPath٪ \٪ LogFilename٪

لقد قمنا مسبقًا بتعيين التاريخ الحالي لمتغير LogFilename. وبالتالي ، مع السطر الأول ، فإننا نعلن فقط أننا نريد إضافة "_AppLog.md" إلى التاريخ لاستخدامه كاسم ملف.

في السطر الثاني ، نقوم بدمج متغير LogPath ، والذي حددناه في البداية كوجهة لسجلاتنا ، مع اسم الملف. مجموعتهم هي اسم المسار الكامل للسجل ، المعين إلى متغير ملف السجل.

دعنا نخصص ما يعادل "سطر فارغ ، الوقت - اسم النافذة ، سطرين فارغين آخرين ، مقسم ، وسطر فارغ آخر ، من أجل قياس جيد" إلى متغير محتوى الملف.

محتوى الملف = `n٪ LogTime٪ -٪ LogWindow٪` n`n- - -`n
  • يخبر الحرف "n" AHK بإدخال سطر جديد (ما يعادل الضغط على Enter مرة واحدة).
  • ستظهر الشرطات الثلاث كمقسم عند عرضها في عارض متوافق مع الشاشات.
  • "٪ LogTime٪" و "٪ LogWindow٪" هما المتغيران حيث قمنا بتخزين اسم النافذة النشطة والوقت الذي تم اكتشافه فيه.

5. قم بتحديث الملف

لقد حددنا ما نريد كتابته في ملفنا ، ونعرف مساره واسمه. كل ما تبقى هو الكتابة الفعلية ، وهي سهلة مثل:

FileAppend ،٪ FileContent٪ ،٪ LogFile٪

إنها تقريبًا مباشرة مثل الإنجليزية البسيطة: نلحق كل شيء في متغير "FileContent" بالملف "LogFile".

ستضيف وظيفة "إلحاق" "محتوى الملف" إلى الملف إذا كان موجودًا ولكنها ستنشئه أيضًا من البداية إذا لم يكن موجودًا.

لكن انتظر ، هناك تعديل أخير: استبدال محتوى متغير LastActiveWindow بالنافذة النشطة حاليًا.

باستخدام هذا ، سيتمكن البرنامج النصي من اكتشاف ملف التالي تغيير النافذة.

LastActiveWindow =٪ ActiveWindow٪

وبهذه الإضافة الأخيرة ، يكون مسجل النافذة جاهزًا! احفظه ، وقم بتشغيله. بعد ذلك ، تحقق من ملف markdown ، والذي سيظهر في مجلد ملف البرنامج النصي الخاص بك بعد عشر ثوانٍ.

تحكم في وقتك

يمكنك فتح ملف السجل الخاص بك باستخدام أي محرر نصوص. ومع ذلك ، سيبدو أجمل إذا فتحته في محرر متوافق مع تخفيض السعر. في لقطة الشاشة ، يمكنك مشاهدة سجلنا في محرر Typora الشهير.

إنها طريقة سهلة للتحقق من التطبيقات التي قضيتها معظم الوقت ، وتحتاج فقط إلى شيء مثل Notepad لاستخدامه.

إذا كنت تريد شيئًا "أكثر" ، فيمكنك دائمًا "تصميم" إخراج أداة التسجيل لإنتاج ملفات CSV بدلاً من ذلك. إنه سهل مثل التغيير والتبديل في متغير FileContent وامتداد الملف الذي تم إنشاؤه. يمكنك بعد ذلك استيراد هذه الملفات إلى تطبيقات مثل Excel أو Google Calc أو حتى برامج تتبع الوقت التابعة لجهات خارجية.

نص كامل:

#NoEnv ؛ موصى به للأداء والتوافق مع إصدارات AutoHotkey المستقبلية.
; # حذر ؛ قم بتمكين التحذيرات للمساعدة في اكتشاف الأخطاء الشائعة.
إدخال SendMode ؛ موصى به للنصوص الجديدة نظرًا لسرعته الفائقة وموثوقيته.
SetWorkingDir٪ A_ScriptDir٪ ، يضمن دليل بدء ثابت.
; المتغيرات
;
AppLoggingRate = 10 ، الفاصل الزمني (بالثواني) بين لقطات عنوان النافذة النشطة.
SleepTime: = AppLoggingRate * 1000
LogPath =٪ A_ScriptDir٪
LastActiveWindow =
; منطق
;
حلقة
{
النوم٪ SleepTime٪
WinGetActiveTitle ، ActiveWindow
StoreActiveWindow =٪ ActiveWindow٪
إذا كان ActiveWindow! =٪ LastActiveWindow٪
{
FormatTime ، LogTime ، HH: mm: ss
FormatTime ، LogFilename ، yyyy-MM-dd
LogWindow: = Regexreplace (ActiveWindow، "[^ a-zA-Z0-9]"، "")
LogFilename =٪ LogFilename٪ _AppLog.md
ملف السجل =٪ LogPath٪ \٪ LogFilename٪
محتوى الملف = `n٪ LogTime٪ -٪ LogWindow٪` n`n- - -`n
ينام 50
FileAppend ،٪ FileContent٪ ،٪ LogFile٪
LastActiveWindow =٪ ActiveWindow٪
}
}
مخرج
10 برامج نصية رائعة لمفتاح AutoHotkey (وكيف تصنعها بنفسك!)

يتيح لك AutoHotkey إنشاء اختصارات Windows ووحدات ماكرو مخصصة والمزيد! فيما يلي بعض البرامج النصية المفيدة لـ AutoHotkey لتبدأ.

اقرأ التالي

يشاركسقسقةبريد الالكتروني
مواضيع ذات صلة
  • شبابيك
  • إنتاجية
  • شبابيك
  • AutoHotkey
  • إدارة الوقت
  • الحيل الإنتاجية
نبذة عن الكاتب
أوديسيز كرافالوس (تم نشر 12 مقالة)

بدأت الحياة الحقيقية لـ OK في حوالي الساعة 10 ، عندما حصل على جهاز الكمبيوتر الأول - Commodore 128. منذ ذلك الحين ، كان يعمل على إذابة keycaps عن طريق الكتابة على مدار الساعة طوال أيام الأسبوع ، محاولًا نشر The Word Of Tech لأي شخص مهتم بما يكفي للاستماع. أو بالأحرى اقرأ.

المزيد من Odysseas Kourafalos

اشترك في نشرتنا الإخبارية

انضم إلى النشرة الإخبارية لدينا للحصول على نصائح تقنية ومراجعات وكتب إلكترونية مجانية وصفقات حصرية!

انقر هنا للاشتراك