בקשה | תוכנה לסגירת כל החלונות הפתוחים.
-
כתבתי כבר תוכנה כזו והעלתי כאן, אבל כמו שכתבו שם בהמשך הנושא, כאשר פתוחות כמה כרטיסיות בסייר קבצים של ווינדוס 11 התוכנה מזהה רק את המזהה של הכרטיסיה שפועלת בקידמה, וכל שאר הכרטיסיות לא נסגרות.
ניסיתי לעבוד על זה קצת, אבל זה הסתבך לי ואין לי זמן לזה כרגע, אז אני מעלה את הקוד מקור אם למישהו יהיה סבלנות לזה.
מסתבר שאפשר להתגבר על הבעיה או ביצירת לולאה נפרדת שמחפשת שוב ושוב חלונות של אקספלורר, וככה אחרי שהכרטיסיה הראשונה כבר נסגרה התוכנה תמצא את השניה, או פשוט למצוא את הצורה לקבל את המזהה של החלון הראשי, מסתבר שיש כזו דרך, וכך זה יהיה הרבה יותר מהיר ויעיל.
זה הקוד, יכול להיות שיש שם טיפה בלגן מהנסיונות שלי לסדר את הבאג.
זה התשובה הסופית לקוראים מהעתיד
סקריפט AHK(V1) קצר שסוגר כול חלון פעיל
זה הגרסה שרצה כאשר מקישים את קיצור הדרך (Ctrl+Alt+C)
וזה הגרסה שרצה שמריצים את התוכנה(שני הגרסאות עובדות כך שלא יסגרו את אקספלורר אם אתם עדיין רוצים לסגור את אקספלורר אלו הגרסאות זה אם וזה בלי קיצור דרך)
אבל אם אתה רוצה לשתף את הקוד הסופי
זה הקוד לגרסה עם הקיצור דרך#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. if not A_IsAdmin { Run *RunAs "%A_ScriptFullPath%" ExitApp } ^!c:: global isActive := false WinGet, id, List Loop, %id% { this_id := id%A_Index% WinGetClass, class, ahk_id %this_id% if (class != "CabinetWClass") { WinRestore, ahk_id %this_id% WinClose, ahk_id %this_id% } if (class = "CabinetWClass") { isActive := true } } If (isActive) { Loop, 5 { Sleep, 100 Send, !{F4} } } return
וזה הקוד לגרסה שרצה שלוחצים
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. if not A_IsAdmin { Run *RunAs "%A_ScriptFullPath%" ExitApp } global isActive := false close() close() { WinGet, id, List Loop, %id% { this_id := id%A_Index% WinGetClass, class, ahk_id %this_id% if (class != "CabinetWClass") { WinRestore, ahk_id %this_id% WinClose, ahk_id %this_id% } if (class = "CabinetWClass") { isActive := true } } If (isActive) { Loop, 5 { Sleep, 100 Send, !{F4} } return } }
בבקשה
תגובה ישנה:@ע-ה-דכו-ע לא עברתי על הקוד לעומק אבל ממה שאני יודע יש למייקרוסופט API בשביל אקספלורר זה נקרא shell COM
ולזכרוני זה נותן להפריד בין אקספלורר למערכת עצמהעריכה: עברתי על הקוד ואני שואל למה הקוד בודק גם אם יש טקסט(כותרת) וגם אם זה נראה (visible) הרי מספיק שיש טקסט (אם אין חלון אין טקסט)
ואולי זה קשור ללמה החלונות האחרים באקספלורר לא נסגרים כי יש בהם טקסט אבל הם לא גלויים\נראים
אם אני ימצא זמן אני ישתדל לערוך את הסקריפט -
זה התשובה הסופית לקוראים מהעתיד
סקריפט AHK(V1) קצר שסוגר כול חלון פעיל
זה הגרסה שרצה כאשר מקישים את קיצור הדרך (Ctrl+Alt+C)
וזה הגרסה שרצה שמריצים את התוכנה(שני הגרסאות עובדות כך שלא יסגרו את אקספלורר אם אתם עדיין רוצים לסגור את אקספלורר אלו הגרסאות זה אם וזה בלי קיצור דרך)
אבל אם אתה רוצה לשתף את הקוד הסופי
זה הקוד לגרסה עם הקיצור דרך#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. if not A_IsAdmin { Run *RunAs "%A_ScriptFullPath%" ExitApp } ^!c:: global isActive := false WinGet, id, List Loop, %id% { this_id := id%A_Index% WinGetClass, class, ahk_id %this_id% if (class != "CabinetWClass") { WinRestore, ahk_id %this_id% WinClose, ahk_id %this_id% } if (class = "CabinetWClass") { isActive := true } } If (isActive) { Loop, 5 { Sleep, 100 Send, !{F4} } } return
וזה הקוד לגרסה שרצה שלוחצים
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. if not A_IsAdmin { Run *RunAs "%A_ScriptFullPath%" ExitApp } global isActive := false close() close() { WinGet, id, List Loop, %id% { this_id := id%A_Index% WinGetClass, class, ahk_id %this_id% if (class != "CabinetWClass") { WinRestore, ahk_id %this_id% WinClose, ahk_id %this_id% } if (class = "CabinetWClass") { isActive := true } } If (isActive) { Loop, 5 { Sleep, 100 Send, !{F4} } return } }
בבקשה
תגובה ישנה:@ע-ה-דכו-ע לא עברתי על הקוד לעומק אבל ממה שאני יודע יש למייקרוסופט API בשביל אקספלורר זה נקרא shell COM
ולזכרוני זה נותן להפריד בין אקספלורר למערכת עצמהעריכה: עברתי על הקוד ואני שואל למה הקוד בודק גם אם יש טקסט(כותרת) וגם אם זה נראה (visible) הרי מספיק שיש טקסט (אם אין חלון אין טקסט)
ואולי זה קשור ללמה החלונות האחרים באקספלורר לא נסגרים כי יש בהם טקסט אבל הם לא גלויים\נראים
אם אני ימצא זמן אני ישתדל לערוך את הסקריפט@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
יש למייקרוסופט API בשביל אקספלורר זה נקרא shell COM
עד כמה שזכור לי השימוש בAPI הזה לפחות בחלקו דומה קצת ליצירת תוכנה שתלחץ על המסך במקומות המתאימים.
לדוגמה בשביל לגשת דרך הAPI הזה לתאריך שינוי אחרון של קובץ זכור לי (אם אני טועה תתקנו אותי) שהצורה לעשות את זה היא לגשת לעמודה של תאריך שינוי אחרון לפי השם שלה, ואם הווינדוס בעברית צריך לגשת ל"תאריך שינוי" ואם באנגלית אז לאיך שקוראים לזה באנגלית.האמת שזה נשמע לי מאוד מוזר, לכן אני מתייחס לזה בכזו ספקנות, אבל ככה זכור לי
-
אוקי זה היה כזה מעצבן לעבוד על זה כי בסופו של דבר צריך לבדוק את זה כול פעם ותמיד אני שוכח איזה חלון שלא רציתי לסגור
אז כדי שכול החלונות שרציתי יפתחו בקלות כתבתי סקריפט קצר בAHK ואז קלטתי שאפשר פשוט להשתמש בזה
ולקח בערך 20 דקות (זה כנראה השפה הכי מוזרה לעבוד איתה) וסיימנו וגם לא לקח הרבה קוד#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. ^!c:: WinGet, id, List Loop, %id% { this_id := id%A_Index% WinClose, ahk_id %this_id% } return
והנה זה
לוחצים CTRL+ALT+C כדי שזה יסגור הכול ולא צריך שום הרשאה מיוחדת הדבר היחיד שאולי אני יסדר זה שווינדוס לא אוחז בקצב עם
התוכנה ולכן נפתחים חלונות של כיבוי אז אולי אני יוסיף טיפה דיליי בין סגירה לסגירה
בבקשה -
אוקי זה היה כזה מעצבן לעבוד על זה כי בסופו של דבר צריך לבדוק את זה כול פעם ותמיד אני שוכח איזה חלון שלא רציתי לסגור
אז כדי שכול החלונות שרציתי יפתחו בקלות כתבתי סקריפט קצר בAHK ואז קלטתי שאפשר פשוט להשתמש בזה
ולקח בערך 20 דקות (זה כנראה השפה הכי מוזרה לעבוד איתה) וסיימנו וגם לא לקח הרבה קוד#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. ^!c:: WinGet, id, List Loop, %id% { this_id := id%A_Index% WinClose, ahk_id %this_id% } return
והנה זה
לוחצים CTRL+ALT+C כדי שזה יסגור הכול ולא צריך שום הרשאה מיוחדת הדבר היחיד שאולי אני יסדר זה שווינדוס לא אוחז בקצב עם
התוכנה ולכן נפתחים חלונות של כיבוי אז אולי אני יוסיף טיפה דיליי בין סגירה לסגירה
בבקשה@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
כדי שזה יסגור הכול ולא צריך שום הרשאה מיוחדת
זה לא סוגר בצורה כפויה אני מקווה, כן? כמו בקוד המקורי, שהוא שואל אם לשמור.
איך עשית את זה? עם שליחה של קיצור מקשים או שליחה של הודעת סגירה תכנותית?
ולכן נפתחים חלונות של כיבוי
אתה מתכוין לזה? זה בגלל שאם לוחצים על ALT +F4 אחרי שכל החלונות סגורים אז הוא פותח את זה, כלומר גם למערכת הפעלה עצמה נשלחת ההודעת סגירה, וזה דווקא יכול להיות מוצלח, כי כשמפעילים את הסקריפט זה בדרך כלל כי רוצים לכבות את המחשב.
-
אוקי זה היה כזה מעצבן לעבוד על זה כי בסופו של דבר צריך לבדוק את זה כול פעם ותמיד אני שוכח איזה חלון שלא רציתי לסגור
אז כדי שכול החלונות שרציתי יפתחו בקלות כתבתי סקריפט קצר בAHK ואז קלטתי שאפשר פשוט להשתמש בזה
ולקח בערך 20 דקות (זה כנראה השפה הכי מוזרה לעבוד איתה) וסיימנו וגם לא לקח הרבה קוד#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. ^!c:: WinGet, id, List Loop, %id% { this_id := id%A_Index% WinClose, ahk_id %this_id% } return
והנה זה
לוחצים CTRL+ALT+C כדי שזה יסגור הכול ולא צריך שום הרשאה מיוחדת הדבר היחיד שאולי אני יסדר זה שווינדוס לא אוחז בקצב עם
התוכנה ולכן נפתחים חלונות של כיבוי אז אולי אני יוסיף טיפה דיליי בין סגירה לסגירה
בבקשה -
@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
כדי שזה יסגור הכול ולא צריך שום הרשאה מיוחדת
זה לא סוגר בצורה כפויה אני מקווה, כן? כמו בקוד המקורי, שהוא שואל אם לשמור.
איך עשית את זה? עם שליחה של קיצור מקשים או שליחה של הודעת סגירה תכנותית?
ולכן נפתחים חלונות של כיבוי
אתה מתכוין לזה? זה בגלל שאם לוחצים על ALT +F4 אחרי שכל החלונות סגורים אז הוא פותח את זה, כלומר גם למערכת הפעלה עצמה נשלחת ההודעת סגירה, וזה דווקא יכול להיות מוצלח, כי כשמפעילים את הסקריפט זה בדרך כלל כי רוצים לכבות את המחשב.
@ע-ה-דכו-ע כן אני אולי יוסיף דילי בהתאם למספר החלונות כי מבדיקה שעשיתי הבעיה מתחילה רק ב3 חלונות בערך
אז הלוגיקה תהייה לדוג שכול חלון שווה מאית השנייה ואז אני יוסיף בייס דיליי של חצי שנייה בערך -
@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
ולא צריך שום הרשאה מיוחדת
גם בשביל לסגור את מנהל המשימות לדוגמה?
@ע-ה-דכו-ע עריכה צודק זה לא סוגר את מנהל המשימות (אני מניח שזה הגיוני בסופו של דבר)
-
@ע-ה-דכו-ע כן אני אולי יוסיף דילי בהתאם למספר החלונות כי מבדיקה שעשיתי הבעיה מתחילה רק ב3 חלונות בערך
אז הלוגיקה תהייה לדוג שכול חלון שווה מאית השנייה ואז אני יוסיף בייס דיליי של חצי שנייה בערך@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
@ע-ה-דכו-ע כן אני אולי יוסיף דילי בהתאם למספר החלונות כי מבדיקה שעשיתי הבעיה מתחילה רק ב3 חלונות בערך
אז הלוגיקה תהייה לדוג שכול חלון שווה מאית השנייה וזה אמור לפתור את זה ואז אני יוסיף בייס דיליי של חצי שנייהלא הבנתי.
הבעיה היא שנפתח החלון של אפשרויות כיבוי ווינדוס?
זה לא בעיה, ככה זה אמור להיות.
-
@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
@ע-ה-דכו-ע כן אני אולי יוסיף דילי בהתאם למספר החלונות כי מבדיקה שעשיתי הבעיה מתחילה רק ב3 חלונות בערך
אז הלוגיקה תהייה לדוג שכול חלון שווה מאית השנייה וזה אמור לפתור את זה ואז אני יוסיף בייס דיליי של חצי שנייהלא הבנתי.
הבעיה היא שנפתח החלון של אפשרויות כיבוי ווינדוס?
זה לא בעיה, ככה זה אמור להיות.
@ע-ה-דכו-ע סבבה לא עשיתי את זה בשביל עצמי אז אם זה מה שאנשים אוהבים שישאר ככה
-
@ע-ה-דכו-ע עריכה צודק זה לא סוגר את מנהל המשימות (אני מניח שזה הגיוני בסופו של דבר)
@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
@ע-ה-דכו-ע עריכה צודק זה לא סוגר את מנהל המשימות (אני מניח שזה הגיוני בסופו של דבר)
אם תריץ את זה כמנהל זה יסגור גם את מנהל המשימות כנראה.
לכן את הסקריפט שלי קימפלתי עם מניפסט של הרצה כמנהל.
-
@ע-ה-דכו-ע עריכה צודק זה לא סוגר את מנהל המשימות (אני מניח שזה הגיוני בסופו של דבר)
@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
למי פשוט פתוח מנהל המשימות ברקע
לי.
אבל האמת שאני לא משתמש בזה. כתבתי את זה בשביל אחרים.
@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
@ע-ה-דכו-ע סבבה לא עשיתי את זה בשביל עצמי אז אם זה מה שאנשים אוהבים שישאר ככה
התכוונתי בעיקר לומר שזה לא קשור למהירות וכו'. זה קשור לזה שמערכת ההפעלה היא גם יישום, וגם איליו הסקריפט שולח את הקיצור מקשים, אם רוצים לטפל בזה צריך פשוט להחריג את החלון הזה, אין לי מושג מה המזהה שלו.
@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
אני יוסיף משהו בפנים אני יראה
בעיקרון אפשר גם בפתיחה של התוכנה הזו להפעיל אותה ידנית כמנהל, או לשנות במאפיינים בלשונית תאימות שייפתח תמיד כמנהל.
אגב, אתה בטוח שזה סוגר את כל הכרטיסיות גם אם יש כמה באותו חלון?
כי אני ניסיתי להחליף את הקוד ששולח הודעת סגירה לתוכנה בקוד שפשוט שולח את הקיצור מקשים ALT+F4, וזה עדיין שלח אותו רק לכרטיסיה הפעילה וסגר רק אותה.
עריכה: החלטתי לא להתעצל מלסגור את כל החלונות במחשב, וראיתי שזה עדיין לא סוגר את הכרטיסיות שאינם הכרטיסיות הפעילות
צריך עדיין להוסיף לקוד עוד קצת לולאות או משהו..
-
@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
@ע-ה-דכו-ע עריכה צודק זה לא סוגר את מנהל המשימות (אני מניח שזה הגיוני בסופו של דבר)
אם תריץ את זה כמנהל זה יסגור גם את מנהל המשימות כנראה.
לכן את הסקריפט שלי קימפלתי עם מניפסט של הרצה כמנהל.
-
@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
למי פשוט פתוח מנהל המשימות ברקע
לי.
אבל האמת שאני לא משתמש בזה. כתבתי את זה בשביל אחרים.
@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
@ע-ה-דכו-ע סבבה לא עשיתי את זה בשביל עצמי אז אם זה מה שאנשים אוהבים שישאר ככה
התכוונתי בעיקר לומר שזה לא קשור למהירות וכו'. זה קשור לזה שמערכת ההפעלה היא גם יישום, וגם איליו הסקריפט שולח את הקיצור מקשים, אם רוצים לטפל בזה צריך פשוט להחריג את החלון הזה, אין לי מושג מה המזהה שלו.
@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
אני יוסיף משהו בפנים אני יראה
בעיקרון אפשר גם בפתיחה של התוכנה הזו להפעיל אותה ידנית כמנהל, או לשנות במאפיינים בלשונית תאימות שייפתח תמיד כמנהל.
אגב, אתה בטוח שזה סוגר את כל הכרטיסיות גם אם יש כמה באותו חלון?
כי אני ניסיתי להחליף את הקוד ששולח הודעת סגירה לתוכנה בקוד שפשוט שולח את הקיצור מקשים ALT+F4, וזה עדיין שלח אותו רק לכרטיסיה הפעילה וסגר רק אותה.
עריכה: החלטתי לא להתעצל מלסגור את כל החלונות במחשב, וראיתי שזה עדיין לא סוגר את הכרטיסיות שאינם הכרטיסיות הפעילות
צריך עדיין להוסיף לקוד עוד קצת לולאות או משהו..
-
@ע-ה-דכו-ע אוקי אם יש למשתמש כמה טאבים פתוחים והמשתמש במילא רוצה לצאת מהמחשב אז הדרך הכי טובה זה פשוט לשלוח
כמה פעמים ידנית בסוף הסקריפט ואז נניח פתוחים למשתמש כמה כרטיסיות הם יסגרו בסוף ידנית אוקי אז בפעם האחרונה כנראה סיימתי@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
@ע-ה-דכו-ע אוקי אם יש למשתמש כמה טאבים פתוחים והמשתמש במילא רוצה לצאת מהמחשב אז הדרך הכי טובה זה פשוט לשלוח
כמה פעמים ידנית בסוף הסקריפט ואז נניח פתוחים למשתמש כמה כרטיסיות הם יסגרו בסוף ידנית אוקי אז בפעם האחרונה כנראה סיימתיהפעם זה הלך!!
כל הכבוד!!
אגב אפשר לעשות שמיד בהרצה של הסקריפט הוא יסגור הכל, כי כיון שזה מיועד לזמן הכיבוי של המחשב אין ענין להפעיל את זה בעליית המחשב ושיפעל כל הזמן ברקע, אפשר שפשוט ההפעלה עצמה תסגור ישירות ויפעילו את זה כשירצו לסגור.
אולי כדאי גם בכל אופן שרק תוסיף את התוספת הזו של השליחה הנוספת בסוף הסקריפט שוב ושוב לקוד המקורי שכתבתי בפייתון, כיון ששם כבר יש את הפונקציונליות לבחור האם לסגור גם את אקספלורר או לא, מכיון שווינדוס פותח בהדלקה הבאה את האקספלורר באותם מקומות שהוא היה פתוח, ואני לדוגמה נהנה שכל החלונות שלו יישארו פתוחים בכיבוי.
@cfopuser עשה בשבילך את העסק מושלם.
-
@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
@ע-ה-דכו-ע אוקי אם יש למשתמש כמה טאבים פתוחים והמשתמש במילא רוצה לצאת מהמחשב אז הדרך הכי טובה זה פשוט לשלוח
כמה פעמים ידנית בסוף הסקריפט ואז נניח פתוחים למשתמש כמה כרטיסיות הם יסגרו בסוף ידנית אוקי אז בפעם האחרונה כנראה סיימתיהפעם זה הלך!!
כל הכבוד!!
אגב אפשר לעשות שמיד בהרצה של הסקריפט הוא יסגור הכל, כי כיון שזה מיועד לזמן הכיבוי של המחשב אין ענין להפעיל את זה בעליית המחשב ושיפעל כל הזמן ברקע, אפשר שפשוט ההפעלה עצמה תסגור ישירות ויפעילו את זה כשירצו לסגור.
אולי כדאי גם בכל אופן שרק תוסיף את התוספת הזו של השליחה הנוספת בסוף הסקריפט שוב ושוב לקוד המקורי שכתבתי בפייתון, כיון ששם כבר יש את הפונקציונליות לבחור האם לסגור גם את אקספלורר או לא, מכיון שווינדוס פותח בהדלקה הבאה את האקספלורר באותם מקומות שהוא היה פתוח, ואני לדוגמה נהנה שכל החלונות שלו יישארו פתוחים בכיבוי.
@cfopuser עשה בשבילך את העסק מושלם.
התשובה הסופית שלי לקוראים מהעתיד למעלה
זה הגרסה שרצה כאשר מקישים את קיצור הדרך (Ctrl+Alt+C)
וזה הגרסה שרצה שמריצים את התוכנה(שני הגרסאות עובדות כך שלא יסגרו את אקספלורר אם אתם עדיין רוצים לסגור את אקספלורר אלו הגרסאות זה אם וזה בלי קיצור דרך)
אבל אם אתה רוצה לשתף את הקוד הסופי
זה הקוד לגרסה עם הקיצור דרך#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. if not A_IsAdmin { Run *RunAs "%A_ScriptFullPath%" ExitApp } ^!c:: global isActive := false WinGet, id, List Loop, %id% { this_id := id%A_Index% WinGetClass, class, ahk_id %this_id% if (class != "CabinetWClass") { WinRestore, ahk_id %this_id% WinClose, ahk_id %this_id% } if (class = "CabinetWClass") { isActive := true } } If (isActive) { Loop, 5 { Sleep, 100 Send, !{F4} } } return
וזה הקוד לגרסה שרצה שלוחצים
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases. SendMode Input ; Recommended for new scripts due to its superior speed and reliability. SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory. if not A_IsAdmin { Run *RunAs "%A_ScriptFullPath%" ExitApp } global isActive := false close() close() { WinGet, id, List Loop, %id% { this_id := id%A_Index% WinGetClass, class, ahk_id %this_id% if (class != "CabinetWClass") { WinRestore, ahk_id %this_id% WinClose, ahk_id %this_id% } if (class = "CabinetWClass") { isActive := true } } If (isActive) { Loop, 5 { Sleep, 100 Send, !{F4} } return } }
בבקשה
-
@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
@ע-ה-דכו-ע אוקי אם יש למשתמש כמה טאבים פתוחים והמשתמש במילא רוצה לצאת מהמחשב אז הדרך הכי טובה זה פשוט לשלוח
כמה פעמים ידנית בסוף הסקריפט ואז נניח פתוחים למשתמש כמה כרטיסיות הם יסגרו בסוף ידנית אוקי אז בפעם האחרונה כנראה סיימתיהפעם זה הלך!!
כל הכבוד!!
אגב אפשר לעשות שמיד בהרצה של הסקריפט הוא יסגור הכל, כי כיון שזה מיועד לזמן הכיבוי של המחשב אין ענין להפעיל את זה בעליית המחשב ושיפעל כל הזמן ברקע, אפשר שפשוט ההפעלה עצמה תסגור ישירות ויפעילו את זה כשירצו לסגור.
אולי כדאי גם בכל אופן שרק תוסיף את התוספת הזו של השליחה הנוספת בסוף הסקריפט שוב ושוב לקוד המקורי שכתבתי בפייתון, כיון ששם כבר יש את הפונקציונליות לבחור האם לסגור גם את אקספלורר או לא, מכיון שווינדוס פותח בהדלקה הבאה את האקספלורר באותם מקומות שהוא היה פתוח, ואני לדוגמה נהנה שכל החלונות שלו יישארו פתוחים בכיבוי.
@cfopuser עשה בשבילך את העסק מושלם.
@ע-ה-דכו-ע כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
אולי כדאי גם בכל אופן שרק תוסיף את התוספת הזו של השליחה הנוספת בסוף הסקריפט שוב ושוב לקוד המקורי שכתבתי בפייתון, כיון ששם כבר יש את הפונקציונליות לבחור האם לסגור גם את אקספלורר או לא, מכיון שווינדוס פותח בהדלקה הבאה את האקספלורר באותם מקומות שהוא היה פתוח, ואני לדוגמה נהנה שכל החלונות שלו יישארו פתוחים בכיבוי.
זה סקריפט טיפש הדרך היחידה למנוע את אקספלורר מלהיסגר זה עם הוא מכווץ
מה שכואב לי לכתוב כי אני מבין שרק נוצרה בעיה חדשה
שאולי אפשר לפתור אבל עדיין -
@ע-ה-דכו-ע כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
אולי כדאי גם בכל אופן שרק תוסיף את התוספת הזו של השליחה הנוספת בסוף הסקריפט שוב ושוב לקוד המקורי שכתבתי בפייתון, כיון ששם כבר יש את הפונקציונליות לבחור האם לסגור גם את אקספלורר או לא, מכיון שווינדוס פותח בהדלקה הבאה את האקספלורר באותם מקומות שהוא היה פתוח, ואני לדוגמה נהנה שכל החלונות שלו יישארו פתוחים בכיבוי.
זה סקריפט טיפש הדרך היחידה למנוע את אקספלורר מלהיסגר זה עם הוא מכווץ
מה שכואב לי לכתוב כי אני מבין שרק נוצרה בעיה חדשה
שאולי אפשר לפתור אבל עדיין -
וסודר
ואין אופציה עכשיו לגרום לזה שאקספלורר ישמור את הכרטיסיות
למרות שבמחשבה שנייה יש דרך אז אולי אני יסדר את זה בהזדמנותעריכה: סודר
@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
ואין בדיוק דרך קלה לגרום לזה שאקספלורר ישמור את הכרטיסיות
מה אתה מתכוון?
בעיקרון אם מכבים את המחשב כאשר יש חלונות פתוחים של אקספלורר, אז בהדלקה הבאה אוטומטית החלונות האלו נפתחים שוב.
ועל זה כתבתי שאם סוגרים את החלונות הפתוחים של האקספלורר, אז מפסידים את זה.
ומה שצריך לעשות זה ס"ה להחריג את החלונות שכלול בשם שלהם EXPLORER, וזה באמת נראה שבסקריפט של AHK לא כל כך שייך להוסיף כאלו תנאים, אבל אולי תוכל ללכת באותה דרך שכבר התחלת, ורק לעשות את זה בסקריפט של הפייתון, שכבר מאפשר למשתמש לבחור להחריג את אקספלורר, ורק להוסיף לו את החזרה על פעולת הסגירה כמה פעמים עד שהכל ייסגר (במקרה שהמשתמש כן בחר לסגור גם את אקספלורר).
כדאי לעשות את זה לפי תנאי שכבר אין עוד חלונות פתוחים, ולא רק סתם לחזור כמה פעמים.
-
@cfopuser כתב בבקשה | תוכנה לסגירת כל החלונות הפתוחים.:
ואין בדיוק דרך קלה לגרום לזה שאקספלורר ישמור את הכרטיסיות
מה אתה מתכוון?
בעיקרון אם מכבים את המחשב כאשר יש חלונות פתוחים של אקספלורר, אז בהדלקה הבאה אוטומטית החלונות האלו נפתחים שוב.
ועל זה כתבתי שאם סוגרים את החלונות הפתוחים של האקספלורר, אז מפסידים את זה.
ומה שצריך לעשות זה ס"ה להחריג את החלונות שכלול בשם שלהם EXPLORER, וזה באמת נראה שבסקריפט של AHK לא כל כך שייך להוסיף כאלו תנאים, אבל אולי תוכל ללכת באותה דרך שכבר התחלת, ורק לעשות את זה בסקריפט של הפייתון, שכבר מאפשר למשתמש לבחור להחריג את אקספלורר, ורק להוסיף לו את החזרה על פעולת הסגירה כמה פעמים עד שהכל ייסגר (במקרה שהמשתמש כן בחר לסגור גם את אקספלורר).
כדאי לעשות את זה לפי תנאי שכבר אין עוד חלונות פתוחים, ולא רק סתם לחזור כמה פעמים.
@ע-ה-דכו-ע זהו עכשיו אפשר לבחור אם רוצים אקספלורר או לא
וזה הזוי לומר אבל התעסקתי יותר מדי מבלי להבין למה אנשים משתמשים בזה אם רוצים לכבות את המחשב אבל כן סיימתי