עבור לתוכן

עזרה בתכנות משהו קטן וחשוב לסקייפ

Featured Replies

פורסם

שלום

אני מתכנט משהו שהוא דיי נחוץ לי בשביל הסקייפ בתוכנת הסקריפטים AutoIt3

ניסיתי לעשות שיעשה את שתי הדברים הבאים בו זמנית:

הדבר הראשון הוא שהוא יקבל כל הזמן הנתון של ה $size[0]

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

WinSetState("[CLASS:tSkMainForm]", "", @SW_HIDE)

כשנתון ה $size[0] שווה ל -3200 או במילים אחרות של השפה:

$size[0] < -3200

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

זה עובד מצויין!

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

אז עשיתי וזה עובד מושלם.

הבעיה היא מה קורה כשהסקריפט פועל כשהסקייפ לא פועל וכאן הבעיה.

כשזה קורה אז הסקריפ מנסה לקבל את נתון ה $size[0] מתוך קביעה שהוא חייב להיות קיים ואז כשהוא לא מוצא קורא כשל ויש הודעת שגיאה

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

תעזרו לי בבקשה

זה הקוד:

Opt("TrayIconHide", 1)
While 1
$size = WinGetPos("[CLASS:tSkMainForm]", "")
If $size[0] < -3200 Then
WinSetState("[CLASS:tSkMainForm]", "", @SW_HIDE)
EndIf
WEnd

חשבתי לעשות מבנה כזה -

חלק ראשון:

בדיקה אם הסקייפ פועל

אם לא פועל אז הסקריפט יסגור את עצמו.

אם כן פועל אז הסקריפט יפנה ל Func בחלק 2

חלק שני:

Func שיכלול את הקוד הבא:

Opt("TrayIconHide", 1)
While 1
$size = WinGetPos("[CLASS:tSkMainForm]", "")
If $size[0] < -3200 Then
WinSetState("[CLASS:tSkMainForm]", "", @SW_HIDE)
EndIf
WEnd

אני רק לא יודע איך לכתוב את הפקודה ששמפנה ל Func

אם תגידו לי איך כותבים אותה אז זה יעזור לי מאוד!

תודה מראש

עריכה 2 :

חשבתי על זה שוב והמבנה הזה פותר רק את המקרה שפותחים את הסקריפט בלי הסקייפ.

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

פורסם

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

מוזר מאוד.

אצלי סגירת התוכנה דרך החלון הראשי (לחיצה על X) ממזערת אותו לTRAY באופן טבעי.

חיפשתי בTOOLS/OPTIONS איפה האופציה הזאת ולא מצאתי. :s05:

פורסם

תוך כדי כל זה בדקתי אם יש גירסה חדשה ועדכנתי.

מסתבר שבגירסה החדשה זה באמת המצב כמו שאתה מתאר.

לאאאאאאאאא למה עידכנתי...... :facepalm:

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

ושעד הגירסה הקודמת אותה אופציה שסומנה בעבר עדיין פעלה למרות שהסירו אותה.

פורסם
  • מחבר

כי יש לך גרסה ישנה יותר

בגרסה החדשה הם ביטלו את זה

פורסם

אוקי פתרתי את התעלומה.

מפתחי SKYPE הם כנראה סינים או הודים שאינם דוברים אנגלית.

בטל את האופציה ADVANCED / KEEP SKYPE IN THE TASKBAR WHILE IM SIGNED IN

ושוב, תודה למפתחי SKYPE על התפריט הברור והיעיל.

סוג של הפוך על הפוך. :facepalm:

פורסם
  • מחבר

האופציה הזאת לא קיימת

אני לא יודע על מה אתה מדבר..

חיפשתי בגוגל ומצאתי את התשובה שלך אבל זה לא נכון לגבי הגרסה החדשה

אין שליטה על זה

עריכה:

אוקי מצאתי את האופציה הזאת

אבל בגוגל הראו פתרונות אחרים..

מוזר

תודה זה פתר את הבעיה.

א לא צריך לתכנת את זה.. חבל דווקא אהבתי את הקטע

פורסם

אני על הגירסה האחרונה כרגע.

וודא שאתה על ADVANCED ולא BASIC OPTIONS MODE

ואז זה אמור להופיע תחת לOPTIONS/ADVANCED/ADVANCED SETTINGS

פורסם
  • מחבר

ישששש הצלחתי לעשות את זה מושלם!!

אני יודע שלא הייתי צריך אבל זה סתם בשביל הכיף

הינה:


While 1
WinWait("[CLASS:tSkMainForm]", "")
Call("skype")
WEnd
Func skype()
While 1
$size = WinGetPos("[CLASS:tSkMainForm]", "")
If @error Then
ExitLoop
EndIf
If $size[0] < -3200 Then
WinSetState("[CLASS:tSkMainForm]", "", @SW_HIDE)
EndIf
WEnd
EndFunc

איך יצא?

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

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

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

עם ההגדרה של סקייפ זה רק אם לוחצים על כפתור הסגירה של החלון

עריכה:

חשבתי על זה

המצאתי בסיס לקוד שמטרטו למזער תוכנות שלא רוצות להתמזער ל tray אז אני יכול עכשיו על בסיס הקוד הזה תוכנה שלמה שתעשה את זה

פורסם

זה באמת עדיף מבחינה פונקציונליות.

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

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

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

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

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

פורסם
  • מחבר

אתה רציני?

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

פורסם

כי זה לוקח כמה דקות, ואולי יפתור את אותה בעיה לכל משתמשי הפורום (ולכל העולם כולו).

יש את המיקרו, ויש את המאקרו.

פורסם
  • מחבר

אין בעיה אני אשלח

פורסם

בהחלט זה מה שקורה כשהתכנון הראשוני לא מוצלח. אולי זה בגלל שסקייפ נכתב ב Object Pascal?

פורסם
  • מחבר

אוקי סיימתי לכתוב את הקוד המלא

זה הקוד:

Opt("TrayIconHide", 1)
Local $user
WinWait("Skype™ - " & $user, "", "")
WinSetState("[CLASS:tSkMainForm]", "", @SW_MINIMIZE)
WinSetState("[CLASS:tSkMainForm]", "", @SW_HIDE)
While 1
WinWait("[CLASS:tSkMainForm]", "")
Call("skype")
WEnd
Func skype()
While 1
Sleep(200)
$size = WinGetPos("[CLASS:tSkMainForm]", "")
If @error Then
ExitLoop
EndIf
If $size[0] < -3200 Then
WinSetState("[CLASS:tSkMainForm]", "", @SW_HIDE)
EndIf
WEnd
EndFunc

כל מה שצריך לעשות זה להגדיר שהקובץ הזה יעלה עם הווינדוס וזהו..

הסקייפ יתפקד ממש כמו שהוא צריך לתפקד!

מה שזה עושה זה

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

ב. מאפשר למזער אותו ל tray בקלות

אם יש מקום יותר מתאים לפרסם את הפתרון אז תגידו לי מה הוא.

לא צריך לחכות שהחברה תסדר את זה.

  • 5 שבועות מאוחר יותר...
פורסם
  • מחבר

סליחה על ההפצה

פשוט רציתי לעדכן שהקוד הזה נחסם!!

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

אני נשבע לכם אין לי מושג למה זה ככה..

הוא ממש מזהה את זה..

ניסיתי לתכנט משהו שונה אבל שום דבר לא עוזר..

אם אני קובע תנאי שהסקייפ ימוזער ומכניס אותו ללולאה אז בכלל קורה משהו ממש הזוי שרואים איך שהסקייפ פותח שוב ושוב את החלונות שלו אחרי שהם נסגרים שוב ושוב :-\

WTF

למה הם חייבים לעשות את זה? ??? ??

אפשר לעזרה בתכנות משהו חדש שיעקוף את זה?

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים