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

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. ארכיון code613m
  4. הקפצת ארוע לפני מעבר למצב שינה

הקפצת ארוע לפני מעבר למצב שינה

מתוזמן נעוץ נעול הועבר ארכיון code613m
13 פוסטים 2 כותבים 753 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • רחמיםר מנותק
    רחמיםר מנותק
    רחמים מורחק
    כתב ב נערך לאחרונה על ידי
    #4

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

    פורסם במקור בפורום CODE613 ב22/08/2013 19:34 (+03:00)

    תגובה 1 תגובה אחרונה
    0
    • רחמיםר מנותק
      רחמיםר מנותק
      רחמים מורחק
      כתב ב נערך לאחרונה על ידי
      #5

      אולי מישהו בכל זאת יודע?
      שמתי לב למשל שאע''פ שהמחשב שלי מוגדר לעבור למצב שינה לאחר מספר דקות ללא פעילות, אם יש מנגינה מושמעת במדיה פלייר הוא לא עובר למצב שינה, לאומת זאת כאשר אני דוחס לZIP ע''י ICSharpCode.SharpZipLib.Zip המחשב כן הולך לישון באמצע התהליך, והבעיה היא שכאשר הוא מתעורר הדחיסה לא יכולה להמשיך כי ע''י השינה התנתק הקשר עם הדיסק החיצוני ששם התבצעה פעולת הדחיסה.
      מה עושים? רבותי תנו עצה!!

      תודה לכולם!

      פורסם במקור בפורום CODE613 ב08/10/2013 20:51 (+03:00)

      תגובה 1 תגובה אחרונה
      0
      • dovidD מחובר
        dovidD מחובר
        dovid ניהול
        כתב ב נערך לאחרונה על ידי
        #6

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

        פורסם במקור בפורום CODE613 ב09/10/2013 15:21 (+03:00)

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        תגובה 1 תגובה אחרונה
        0
        • רחמיםר מנותק
          רחמיםר מנותק
          רחמים מורחק
          כתב ב נערך לאחרונה על ידי
          #7

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

          פורסם במקור בפורום CODE613 ב09/10/2013 21:57 (+03:00)

          תגובה 1 תגובה אחרונה
          0
          • dovidD מחובר
            dovidD מחובר
            dovid ניהול
            כתב ב נערך לאחרונה על ידי
            #8

            @רחמים

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

            זה הקוד שיש שמסתובב באינטרנט, אני לא יכול לנסות, תנסה אתה:

            Private Declare Function SetThreadExecutionState Lib "kernel32" (ByVal esFlags As EXECUTION_STATE) As EXECUTION_STATE
            Public Enum EXECUTION_STATE As Integer
                ES_CONTINUOUS = &H80000000
                ES_DISPLAY_REQUIRED = &H2
                ES_SYSTEM_REQUIRED = &H1
            End Enum
            Public Function PowerSaveOff() As EXECUTION_STATE
                Return SetThreadExecutionState(EXECUTION_STATE.ES_SYSTEM_REQUIRED Or EXECUTION_STATE.ES_DISPLAY_REQUIRED Or EXECUTION_STATE.ES_CONTINUOUS)
            End Function
            Public Function PowerSaveOn() As EXECUTION_STATE
                Return SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS)
            End Function
            

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

            פורסם במקור בפורום CODE613 ב10/10/2013 11:29 (+03:00)

            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

            בכל נושא אפשר ליצור קשר dovid@tchumim.com

            תגובה 1 תגובה אחרונה
            0
            • רחמיםר מנותק
              רחמיםר מנותק
              רחמים מורחק
              כתב ב נערך לאחרונה על ידי
              #9

              א. תודה רבה!

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

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

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

              פורסם במקור בפורום CODE613 ב10/10/2013 13:56 (+03:00)

              תגובה 1 תגובה אחרונה
              0
              • dovidD מחובר
                dovidD מחובר
                dovid ניהול
                כתב ב נערך לאחרונה על ידי
                #10

                @רחמים

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

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

                מה יכול להיות? לא יודע. נסה להחליף את הערך הזה: &H1 בזה &H40.

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

                פורסם במקור בפורום CODE613 ב10/10/2013 14:21 (+03:00)

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                תגובה 1 תגובה אחרונה
                0
                • רחמיםר מנותק
                  רחמיםר מנותק
                  רחמים מורחק
                  כתב ב נערך לאחרונה על ידי
                  #11

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

                  Public Class Form1
                  
                      Private Sub ButtonOn_Click(sender As System.Object, e As System.EventArgs) Handles ButtonOn.Click
                          'שומר על על המחשב ער
                          Power.SaveOn()
                      End Sub
                  
                      Private Sub ButtonOff_Click(sender As System.Object, e As System.EventArgs) Handles ButtonOff.Click
                          'מפסיק לשמור על המחשב ער
                          Power.SaveOff()
                      End Sub
                  
                  End Class
                  
                  Public Class Power
                  
                      Shared WithEvents Timer1 As New Timer With {.Enabled = False, .Interval = 100}
                  
                      Private Declare Function SetThreadExecutionState _
                          Lib "kernel32" _
                          Alias "SetThreadExecutionState" (ByVal esFlags As EXECUTION_STATE) As EXECUTION_STATE
                  
                      Private Shared esFlags As UInteger = EXECUTION_STATE.ES_CONTINUOUS
                  
                      Public Enum EXECUTION_STATE As UInteger
                          ES_AWAYMODE_REQUIRED = 64
                          ES_CONTINUOUS = 2147483648
                          ES_DISPLAY_REQUIRED = 2
                          ES_SYSTEM_REQUIRED = 1
                          ES_USER_PRESENT = 4
                      End Enum
                  
                      Public Shared Function SaveOff() As EXECUTION_STATE
                          Timer1.Enabled = False
                          Return SetThreadExecutionState(EXECUTION_STATE.ES_CONTINUOUS)
                      End Function
                  
                      Public Shared Sub SaveOn()
                          esFlags = EXECUTION_STATE.ES_CONTINUOUS Or
                              EXECUTION_STATE.ES_SYSTEM_REQUIRED Or
                              EXECUTION_STATE.ES_AWAYMODE_REQUIRED
                          Timer1.Enabled = True
                      End Sub
                  
                      Private Shared Sub Timer1_Tick(sender As System.Object, e As System.EventArgs) Handles Timer1.Tick
                          SetThreadExecutionState(esFlags)
                      End Sub
                  
                  End Class
                  

                  פורסם במקור בפורום CODE613 ב10/10/2013 14:58 (+03:00)

                  תגובה 1 תגובה אחרונה
                  0
                  • dovidD מחובר
                    dovidD מחובר
                    dovid ניהול
                    כתב ב נערך לאחרונה על ידי
                    #12

                    א. אין היגיון לטיימר כ"כ צפוף, הכי מהר שהמחשב מכבה לבד זה דקה שזה אלף ולא מאה.
                    ב. בשביל לדחות את הטיימר לפי ההוראות של מיקרוספט מספיק
                    esFlags = EXECUTION_STATE.ES_CONTINUOUS Or EXECUTION_STATE.ES_SYSTEM_REQUIRED

                    פורסם במקור בפורום CODE613 ב10/10/2013 15:11 (+03:00)

                    מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                    בכל נושא אפשר ליצור קשר dovid@tchumim.com

                    תגובה 1 תגובה אחרונה
                    0
                    • רחמיםר מנותק
                      רחמיםר מנותק
                      רחמים מורחק
                      כתב ב נערך לאחרונה על ידי
                      #13

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

                      פורסם במקור בפורום CODE613 ב10/10/2013 19:01 (+03:00)

                      תגובה 1 תגובה אחרונה
                      0

                      בא תתחבר לדף היומי!
                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום