אתה מתחיל כל יום עם הכוונות הטובות ביותר, מחודש, מוכן להתמודד עם כל המשימות שלך. ואז, אתה בודק את השעה, זה 03:00 לפנות בוקר, ואתה לא יכול שלא לתהות, לאן נעלם כל הזמן?

אתה יכול להשתמש באפליקציה ייעודית למעקב אחר זמן, אבל אלה יכולים להיות מורכבים בצורה מעצבנת. בנוסף, איפה הכיף בזה?

למה שלא תיצור מיני אפליקציה פשוטה משלך במקום זאת, שתוכל לעקוב אחר כל החלונות שבילית בהם במהלך היום? תצטרך רק AutoHotKey, מעבד תמלילים בסיסי כמו Notepad, וכחצי שעה. בואו נתקע פנימה.

מה זה AutoHotKey?

המטרה העיקרית של AutoHotKey היא אוטומציה של שולחן העבודה. זוהי שפת סקריפטים שבאמצעותה ניתן לשלוח הקשות ותנועות עכבר לכל חלון פעיל, ליצור מקשים חמים או לשנות לחיצות מקשים. אתה יכול, למשל, להשתמש בו כדי השבת מקשים ספציפיים במקלדת שלך.

עם זאת, זו הגרסה הקצרה של הסיפור ולא ממש מייצגת את מה ש-AutoHotKey (בקיצור AHK) יכול לעשות. הסיבה לכך היא שהיא התפתחה מאז התפיסה הראשונית שלה ועכשיו היא שפת סקריפטים שלמה. אתה יכול לחשוב על מה שאתה יכול לעשות איתו בתור "תכנות לייט".

לפיכך, אתה יכול גם להשתמש ב-AHK כדי ליצור מיני אפליקציות, בדיוק כמו מה שהגדרנו כמטרה שלנו למאמר זה. שימו לב שבמאמר זה נצלול היישר לתוך AHK, אז אולי כדאי לכם לבדוק

instagram viewer
מדריך AutoHotKey המהיר שלנו למתחילים לפני שתתחיל.

יצירת סקריפט משלך לרישום חלון עם AutoHotKey

לפני שנתחיל, עליך להתקין את AHK במחשב שלך מכיוון שהוא ישמש כ"מנתח" עבור הסקריפט שלך. זה "המנוע" שיאפשר לסקריפט שלך "לרוץ".

הערה: אתה יכול גם להרכיב את הסקריפט שלך לאחר סיומו כדי להפוך אותו לתוכנית הפעלה אמיתית. עם זאת, זה מחוץ לתחום המאמר הזה.

הורד AutoHotKey מהאתר הרשמי שלה ולהתקין אותו.

הפעל את מנהל הקבצים המועדף עליך, ובקר בתיקייה שבה תרצה לאחסן את הסקריפט שלך. לאחר מכן, לחץ לחיצה ימנית על נקודה ריקה ובחר חדש > AutoHotKey Script.

לאחר שזה נעשה, הגיע הזמן לכתוב את התסריט בפועל.

1. הגדר את המשתנים הדרושים

פתח את התסריט בעורך המועדף עליך. אתה יכול להשתמש במשהו פשוט כמו Notepad שמגיע עם Windows, אבל אנחנו נשתמש פנקס רשימות++ עבור המדריך הזה. מכיוון ש-Notepad++ חינמי ומותאם טוב יותר למטרה, שווה לנסות אותו. הקפד לבדוק גם המדריך האולטימטיבי שלנו על כל קיצורי המקלדת שלו בזמן שאתה בודק את זה.

שים לב שאסור להשתמש באף אפליקציה כמו Word, או Google Docs, מה שעלול להשפיע על העיצוב שלה. השתמש בעורך טקסט או "קוד".

הסקריפט כבר יכיל כמה עקרונות בסיסיים המומלצים עבור תאימות וביצועים. השאר אותם כפי שהם, והתחל את התסריט שלך מתחתיהם.

להתחיל עם:

AppLoggingRate = 10; מרווח זמן (בשניות) בין לכידת כותרת חלון פעילה.
זמן שינה := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =

אנו מתחילים בהקצאת הערך "10" ל-AppLoggingRate, שבו נשתמש כדי לחשב את הזמן בין לכידת כותרות החלונות.

בשימוש עם פונקציית השינה של AHK, 1000 שווה בערך לשניה. לכן, על ידי הכפלה עם AppLogingRate, אנו הופכים את המשתנה SleepTime ל"שווה לעשר שניות".

LogPath הוא הנתיב שבו אנו רוצים לאחסן את היומנים שלנו. אנו משתמשים בערך %A_ScriptDir%, שמתורגם ל"התיקיה שממנה אתה מפעיל את הסקריפט". אתה יכול להשתמש בנתיב המלא לתיקיה אחרת אם תרצה.

לבסוף, הגדרנו את LastActiveWindow לריק. נשתמש בזה מאוחר יותר כדי לבדוק אם החלון הפעיל השתנה.

2. עקוב אחר ה-Windows Active

מכיוון שאנו רוצים לעקוב ללא הרף איזה חלון פעיל, ואם הוא משתנה, לרשום את הכותרת והזמן שלו, נצטרך להשתמש ב"לולאה".

כפי ששמה מציין, לולאה פועלת ברציפות, וחוזרת על אותה פונקציה(ות). הודות לתחביר הפשוט של AHK, אנו מאמינים שה"קוד" הבא הוא יחסית מובן מאליו:

לוּלָאָה
{
שינה %SleepTime%
Msgbox, זה עובד!
}

אנו מגדירים לולאה פשוט על ידי הקלדת המילה "לולאה" ולאחר מכן סימון ההתחלה שלה ב-"{" וסיום ב-"}. כל מה שבשורות בין "{" ו-"}" יפעל תמידית עד שתצא מהסקריפט.

אנו מתחילים את הלולאה בהמתנה (Sleep) למשך פרק זמן השווה למשתנה SleepTime. הגדרנו אותו כמשתנה בפרק הקודם כדי להפוך את השליטה בזמן לפשוטה יותר. במקום לערוך את הסקריפט עצמו, תוכלו "לספר" לו, דרך המשתנה הזה, כמה שניות צריכה להימשך כל לולאה.

לבסוף, אנו משתמשים בתיבת הודעות כדי לבדוק את הסקריפט שלנו. נסה לשמור ולהפעיל אותו (לחץ פעמיים על הקובץ שלו). תראה תיבת הודעה המציגה "זה עובד!" לאחר עשר שניות.

לחץ לחיצה ימנית על הסמל של AHK במגש Windows וצא מהסקריפט כאשר יש לך מספיק תיבות הודעות. לאחר מכן, חזור לעורך שלך והחלף את שורת MsgBox ב:

WinGetActiveTitle, ActiveWindow

זוהי הפקודה לקבלת כותרת החלון הפעיל. התעלם מהשורה הנוספת של "StoreActiveWindow", בה השתמשנו בעת כתיבת הסקריפט לבדיקה.

3. קבל את השעה והשם הנוכחיים

כעת מגיע החלק המרכזי של ההיגיון של התסריט. אנחנו רוצים שהוא ישווה את שם החלון הפעיל לזה הקודם, ואם הם שונים, "עשה משהו". זה פשוט כמו הבא:

If ActiveWindow != %LastActiveWindow%
{
}

עם האמור לעיל, אנו בודקים אם ה-ActiveWindow הנוכחי שונה (!=) מהערך המאוחסן במשתנה LastActiveWindow (אשר בתחילה הגדרנו לריק). אם כן, AHK יבצע את הקוד בין { ל-}, שלעת עתה ריקים.

עלינו לעקוב גם אחר התאריך וגם השעה כדי למדוד כמה זמן חלון היה פעיל. נשמור יומנים שונים עבור כל יום, תוך שימוש בתאריך בשמם. ואנחנו רוצים לרשום לא רק כל שינוי בחלון אלא גם מתי זה קרה. לשם כך, נקצה פורמטים שונים של זמן למשתנים LogTime ו-LogFilename, עם:

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

הוסף את השורות האלה בין הסוגריים המתולתלים תחת "אם ActiveWindow...", כדי ש-AHK יפעיל אותם כאשר הוא מזהה שינוי בחלון.

4. עיצוב נתונים

תפסנו את השעה בשני משתנים בפורמט שונה, כמו גם את הכותרת של החלון הפעיל. עם זאת, יש בעיה זעירה: כותרת של חלון עשויה להכיל גם תווים שאנחנו לא רוצים. אנו יכולים להסיר את כל התווים שאינם אלפאנומריים באמצעות התמיכה של AHK עבור RegEx, עם:

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

עם זה, אנו "אומרים" ל-AHK להסיר את כל התווים מהמשתנה ActiveWindow שאינם תואמים למה שבסוגריים:

  • אותיות קטנות
  • אותיות רישיות
  • מספרים

לאחר מכן, אנו מקצים את התוצאה למשתנה LogWindow.

כשכל המשתנים מוגדרים וכל הנתונים יקרי הערך נתפסים, אנחנו מוכנים לעצב את קובץ היומן שלנו ואת תוכנו.

LogFilename = %LogFilename%_AppLog.md
LogFile = %LogPath%\%LogFilename%

בעבר הקצינו את התאריך הנוכחי למשתנה LogFilename. לפיכך, עם השורה הראשונה, אנו רק מצהירים שאנו רוצים להוסיף "_AppLog.md" לתאריך כדי להשתמש בו כשם קובץ.

בשורה השנייה נשלב את המשתנה LogPath, אותו הגדרנו בהתחלה כיעד ללוגים שלנו, עם שם הקובץ. השילוב שלהם הוא שם הנתיב המלא של היומן, המוקצה למשתנה LogFile.

הבה נקצה למשתנה FileContent את המקבילה של "שורה ריקה, זמן - שם החלון, עוד שתי שורות ריקות, מחלק ועוד שורה ריקה".

FileContent = `n%LogTime% - %LogWindow%`n`n- - -`n
  • ה-"n" אומרים ל-AHK להזין שורה חדשה (המקבילה ללחוץ על Enter פעם אחת).
  • שלושת המקפים יופיעו כמפריד כשהם מוצגים במציג תואם סימון.
  • "%LogTime%" ו-"%LogWindow%" הם המשתנים שבהם אחסנו את שם החלון הפעיל והזמן שבו הוא זוהה.

5. עדכן את הקובץ

הגדרנו מה אנחנו רוצים לכתוב לקובץ שלנו, ואנחנו יודעים את הנתיב ואת שם הקובץ שלו. כל מה שנותר הוא הכתיבה בפועל, שהיא קלה כמו:

FileAppend, %FileContent%, %LogFile%

זה פשוט כמעט כמו אנגלית רגילה: אנחנו מוסיפים את כל מה שיש במשתנה "FileContent" לקובץ "LogFile".

הפונקציה "append" תוסיף את "FileContent" לקובץ אם הוא קיים אבל גם תיצור אותו מאפס אם לא.

אבל רגע, יש תיקון אחרון: החלפת התוכן של המשתנה LastActiveWindow בחלון הפעיל כרגע.

בעזרת זה, הסקריפט יוכל לזהות את הַבָּא החלפת חלון.

LastActiveWindow = %ActiveWindow%

ועם התוספת האחרונה הזו, כור החלון שלך מוכן! שמור אותו, והפעל אותו. לאחר מכן, בדוק את קובץ הסימון, שיופיע בתיקיית קובץ הסקריפט שלך לאחר עשר שניות.

השתלט על הזמן שלך

אתה יכול לפתוח את קובץ היומן שלך עם כל עורך טקסט. ובכל זאת, זה ייראה יפה יותר אם תפתח אותו בעורך תואם סימון. בצילום המסך, אתה יכול לראות את היומן שלנו בעורך Typora הפופולרי.

זוהי דרך קלה לבדוק באילו אפליקציות ביליתי הכי הרבה זמן, ואתה צריך רק משהו כמו פנקס רשימות כדי להשתמש בו.

אם אתה רוצה משהו "יותר", אתה תמיד יכול "לסגנן" את הפלט של לוגר שלך כדי לייצר קבצי CSV במקום זאת. זה קל כמו להתאים את המשתנה FileContent ואת סיומת הקובץ שנוצר. לאחר מכן תוכל לייבא קבצים כאלה לאפליקציות כמו Excel, Google Calc, או אפילו עוקבי זמן של צד שלישי.

התסריט המלא:

#NoEnv; מומלץ עבור ביצועים ותאימות עם מהדורות עתידיות של AutoHotkey.
; #לְהַזהִיר; אפשר אזהרות כדי לסייע באיתור שגיאות נפוצות.
SendMode קלט; מומלץ עבור סקריפטים חדשים בשל המהירות והאמינות המעולים שלו.
SetWorkingDir %A_ScriptDir%; מבטיח ספריית התחלה עקבית.
; משתנים
;
AppLoggingRate = 10; מרווח זמן (בשניות) בין לכידת כותרת חלון פעילה.
זמן שינה := AppLoggingRate * 1000
LogPath = %A_ScriptDir%
LastActiveWindow =
; הִגָיוֹן
;
לוּלָאָה
{
שינה %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
לישון 50
FileAppend, %FileContent%, %LogFile%
LastActiveWindow = %ActiveWindow%
}
}
יְצִיאָה
10 סקריפטים מגניבים AutoHotkey (ואיך ליצור סקריפטים משלך!)

AutoHotkey מאפשר לך ליצור קיצורי דרך מותאמים אישית של Windows, פקודות מאקרו ועוד! הנה כמה סקריפטים שימושיים AutoHotkey כדי להתחיל.

קרא הבא

לַחֲלוֹקצִיוּץאימייל
נושאים קשורים
  • חלונות
  • פִּריוֹן
  • חלונות
  • AutoHotkey
  • ניהול זמן
  • טריקים של פרודוקטיביות
על הסופר
אודיסיאה קורפאלוס (12 מאמרים שפורסמו)

חייו האמיתיים של OK התחילו בסביבות 10, כאשר קיבל את המחשב הראשון שלו - קומודור 128. מאז, הוא ממיס כובעים על ידי הקלדה 24/7, מנסה להפיץ את The Word Of Tech לכל מי שמעוניין מספיק כדי להקשיב. או ליתר דיוק, לקרוא.

עוד מאת Odysseas Kourafalos

הירשם לניוזלטר שלנו

הצטרף לניוזלטר שלנו לקבלת טיפים טכניים, ביקורות, ספרים אלקטרוניים בחינם ומבצעים בלעדיים!

לחץ כאן כדי להירשם