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

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

כיצד להגדיר מקש קיצור למרכז חלון עם AutoHotKey

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

"הבעיה" שיש ל-Windows

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

הפתרון לבעיה

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

instagram viewer
  1. "קרא" את מזהה החלון הפעיל.
  2. כמו כן "קרא" את מידותיו (רוחב וגובה).
  3. "קרא" את מידות הצג.
  4. שלב את מידות הצג והחלון כדי לחשב את הקואורדינטות האופטימליות להצגת החלון האמור במרכז המסך.
  5. הזז את החלון לקואורדינטות האלה.

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

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

ראשית, הגדרת מקש החם

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

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

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

תן לקובץ הסקריפט שלך שם, ולאחר מכן לחץ לחיצה ימנית עליו ו לַעֲרוֹך זה. אם אינך משתמש באפליקציית עריכת טקסט ידידותית לקוד, כמו Visual Studio Code או Notepad++, השתמש ב-Windows Notepad. הימנע מעורכים כמו Wordpad, שעלולים להוסיף תחביר חסר תועלת (לצורך המטרה) ל"קוד" שלך.

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

"הזז" שתיים או שלוש שורות מתחתיהן והיכנס לקיצור הדרך שיפעיל את הפונקציה שלך. אתה יכול ליצור שילוב מקשים באמצעות "+" עבור Shift, "^" עבור CTRL, "!" עבור Alt, ו-"#" עבור מקש Windows, כמו גם כל מקש "רגיל" מהמקלדת (אותיות ומספרים).

לדוגמה, כדי שהשילוב CTRL + Y יפעיל את הסקריפט שלך, השתמש ב:

^y::

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

"הזז" שתיים או שלוש שורות מתחת לזה על ידי לחיצה על Enter, והקלד "return", אשר יסמן את סוף הפונקציה המסוימת. התוצאה המלאה צריכה להיראות כך:

^y::
; זֶה הוא תגובה.
לַחֲזוֹר

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

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

קבל את הפרטים של החלון הפעיל

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

WinGetTitle, ActiveWindowTitle, א
WinGetPos רוחב, גובה, %ActiveWindowTitle%

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

  • השורה הראשונה תופסת את כותרת החלון הפעיל.
  • השורה השנייה קוראת את הרוחב והגובה שלו וממפה אותם למילים/משתנים "רוחב" ו"גובה", שבהן נשתמש בהמשך לחישובים שלנו.

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

מה לגבי אזור המוניטור הראשי?

אנחנו לא צריכים פקודות נוספות כדי למצוא את הרוחב והגובה של הצג הראשי שלנו. AutoHotKey מגיע עם שני משתנים מוגדרים מראש שכבר מכילים את המידע הזה עבורנו: "A_ScreenWidth" ו-"A_ScreenHeight".

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

הגיע הזמן לחשב את מיקום היעד

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

אז בואו נלך על "TargetX" בתור המשתנה שיחזיק את הקואורדינטות האופקיות ו-"TargetY" בתור המשתנה אחד עם הקואורדינטות האנכיות לאן עלינו להזיז את החלון כדי שהוא יופיע במרכז ה- מָסָך.

TargetX := (A_ScreenWidth/2)-(רוֹחַב/2); כאן אנו מחשבים את האופקי חַלוֹן יַעַד...
TargetY := (A_ScreenHeight/2)-(Height/2); ...וכאן האנכי.

בואו נפענח את השורות האלה באנגלית פשוטה:

  • "TargetX" ו-"TargetY" הם שני המשתנים.
  • ":=" מודיע ל-AutoHotKey שהמשתנים צריכים להיות שווים לתוצאות החישובים בצד ימין, ושיש להתייחס לתוצאות הללו כמספרים.
  • "(A_ScreenWidth/2)" מחלק את רוחב הצג המלא בשניים.
  • "(Width/2)" עושה את אותו הדבר עבור רוחב החלון הפעיל.

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

עכשיו למקם מחדש את החלון

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

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

WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%

באמור לעיל:

  • "WinMove" היא הפקודה AutoHotKey שמזיזה חלון.
  • "%ActiveWindowTitle%" הוא המשתנה שבו ממופה כותרת החלון הפעיל.
  • "%TargetX%" ו-"%TargetY%" הן הקואורדינטות האופקיות והאנכיות לאן להזיז את החלון.

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

התסריט הסופי

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

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

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

#NoEnv; מומלץ עבור ביצועים ותאימות עם מהדורות עתידיות של AutoHotkey.
; #לְהַזהִיר; אפשר אזהרות כדי לסייע באיתור שגיאות נפוצות.
SendMode קלט; מוּמלָץ לחָדָשׁ סקריפטים בשל המהירות והאמינות המעולים שלו.
SetWorkingDir %A_ScriptDir%; מבטיח ספריית התחלה עקבית.
^y::
WinGetTitle, ActiveWindowTitle, A; קבל את החלון הפעיל'כותרת עבור "מיקוד" זה/פועל על זה.
WinGetPos רוחב, גובה, %ActiveWindowTitle%; קבל את הפעיל חַלוֹןהעמדה של, בשימוש ל החישובים שלנו.
TargetX := (A_ScreenWidth/2)-(רוֹחַב/2); חשב את המטרה האופקית שבה נעביר את חַלוֹן.
יעד יעד := (A_ScreenHeight/2)-(גוֹבַה/2); חשב את המיקום האנכי שֶׁל ה חַלוֹן.

WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; הזז את חַלוֹן לקואורדינטות המחושבות.

לַחֲזוֹר

שים לב שאתה יכול להעתיק את הסקריפט שלמעלה, להדביק אותו בפנקס רשימות או בעורך טקסט דומה, ולשמור אותו עם סיומת AHK. לאחר מכן, "הפעל" אותו, כאשר AutoHotKey מותקן, כדי למרכז כל חלון בכל פעם שתלחץ על CTRL + Y. אם אתה לא אוהב את קיצור הדרך הזה, כוונן את השורה "^y::" לשילוב מקשים אחר. לדוגמה, !+c:: ימפה את הפונקציה לשילוב המקשים Shift + Alt + C.

מסלול בונוס

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

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

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

#NoEnv; מומלץ עבור ביצועים ותאימות עם מהדורות עתידיות של AutoHotkey.
; #לְהַזהִיר; אפשר אזהרות כדי לסייע באיתור שגיאות נפוצות.
SendMode קלט; מוּמלָץ לחָדָשׁ סקריפטים בשל המהירות והאמינות המעולים שלו.
SetWorkingDir %A_ScriptDir%; מבטיח ספריית התחלה עקבית.
PositionToggle = 1; להשתמש א מספרכפי ש מתג ל צִיוּן עַל אשר מפקחים על חַלוֹן צריך להופיע.
^y::
WinGetTitle, ActiveWindowTitle, א
WinGetPos רוחב, גובה, %ActiveWindowTitle%

אם PositionToggle = 1; חשבון מצב המתג ו"לַעֲשׂוֹת מה בין הסוגריים המתולתלים" אם כן מַעֲרֶכֶתל1ל המוניטור הראשי שלנו.
{
TargetX := (A_ScreenWidth/2)-(Width/2)
יעד יעד := (A_ScreenHeight/2)-(Height/2)
PositionToggle = 2; "סְטִירָה קַלָה" החלפת המצב כך שאם נשתמש שוב במקש החם, החלון הפעיל שלנו יעבור לצג השני.
}
Else If PositionToggle = 2; האם השתמשנו במקש החם בעבר, "מרצד" מספר המעבר למוניטור השני? אז התסריט צריך במקום לעשות מה's בין הסוגריים המתולתלים הבאים במקום אלה שלמעלה.
{
SysGet, Mon2, Monitor, 2; קבל את המוניטור השני'הפרטים של
Mon2Width := Mon2Right - Mon2Left; חשב את הצג השני'רוחב בפועל.
Mon2Height := Mon2Bottom - Mon2Top; חשב את הצג השני'הגובה בפועל.

TargetX := (Mon2Width/2)-(Width/2)+A_ScreenWidth; חשב לאן להזיז את החלון. שימו לב שאנו מוסיפים גם את הצג הראשי's רוחב מאז AutoHotKey יכול'לא להזיז חלונות במסכים בודדים אלא על פניהם המשולבים "משטח".
TargetY := (Mon2Height/2)-(Height/2)+Mon2Top; חשב את היעד האנכי האופטימלי להזזת החלון בצג השני. כמו לעיל, המוניטור השני'הפרטים האנכיים של זה מזוהים ביחס לצג הראשי. לפיכך, עלינו להיות יצירתיים כדי להשיג יעד אופטימלי על ידי הכרה כיצד המוניטור השני'העליון אינו't שווה ל-0 (כמו הראשי'ס).

PositionToggle = 1; העבר את המתג אחורה כך אם אנו עושים שימוש חוזר במקש החם, ה- חַלוֹן יעבור חזרה לצג הראשי.
}

WinMove, %ActiveWindowTitle%,, %TargetX%, %TargetY%; הפעולה בפועל, הזזת הפעיל חַלוֹן לקואורדינטות המחושבות שלנו.

לַחֲזוֹר

מרכז חלון עם מפתח, הדרך הקלה

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

מצא איפה אתה מבזבז את הזמן שלך על Windows עם AutoHotKey

קרא הבא

לַחֲלוֹקצִיוּץלַחֲלוֹקאימייל

נושאים קשורים

  • חלונות
  • חלונות 10
  • Windows 11
  • AutoHotkey
  • התאמה אישית של Windows

על הסופר

אודיסיאה קורפאלוס (31 מאמרים שפורסמו)

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

עוד מאת Odysseas Kourafalos

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

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

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