<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[הקפצת ארוע לפני מעבר למצב שינה]]></title><description><![CDATA[<p dir="auto">כידוע מצב שינה יכול לקרות באמצע פעילות של התוכנה ולהפריע ולשבש, ובמיוחד אם המחשב על סוללה ופעילות התוכנה לוקחת כמה דקות עד שפתאום המחשב עובר למצב שינה כדי לשמור על כח הסוללה.<br />
איך אני יכול לעצור את המעבר למצב שינה ולהוציא הודעה למשתמש אם הוא בטוח שהוא רוצה לעבור למצב שינה באמצע פעילות התוכנה וכדומה. ואז לפי מה שהמשתמש יבחר אוכל לטפל בתהליך שיסתיים או ימשיך ללא שיבושים?<br />
יש את הארוע SystemEvents.PowerModeChanged אבל הוא לא נותן לבטל את השינה ולהוציא הודעה.</p>
<p dir="auto">כידוע יש שני מצבי שינה מקובלים: שינה עם פעילות חשמלית קלה, ושינה עמוקה שהיא כמו כיבוי רק שנשמר המידע. ולפני שניהם אני צריך שהארוע יקפיץ הודעה.</p>
<p dir="auto">תודה לכולם.</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב20/08/2013 10:08 (+03:00)</em></p>
]]></description><link>https://tchumim.com/topic/160/הקפצת-ארוע-לפני-מעבר-למצב-שינה</link><generator>RSS for Node</generator><lastBuildDate>Tue, 09 Jun 2026 08:15:11 GMT</lastBuildDate><atom:link href="https://tchumim.com/topic/160.rss" rel="self" type="application/rss+xml"/><pubDate>Mon, 29 Jan 2018 10:33:20 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to הקפצת ארוע לפני מעבר למצב שינה on Mon, 29 Jan 2018 10:33:24 GMT]]></title><description><![CDATA[<p dir="auto">אכן כנראה שאתה צודק.<br />
טוב, אז הצלחנו ב''ה שהמחשב מעצמו לא ישן, השאלה אם אפשר גם שכאשר המשתמש ילחץ על לחצן השינה שהוא יקבל הודעה אם הוא בטוח שהוא רוצה לעבור למצב שינה. ותהיה לו הבחירה אם לבטל את המעבר לשינה.</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב10/10/2013 19:01 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/890</link><guid isPermaLink="true">https://tchumim.com/post/890</guid><dc:creator><![CDATA[רחמים]]></dc:creator><pubDate>Mon, 29 Jan 2018 10:33:24 GMT</pubDate></item><item><title><![CDATA[Reply to הקפצת ארוע לפני מעבר למצב שינה on Mon, 29 Jan 2018 10:33:23 GMT]]></title><description><![CDATA[<p dir="auto">א. אין היגיון לטיימר כ"כ צפוף, הכי מהר שהמחשב מכבה לבד זה דקה שזה אלף ולא מאה.<br />
ב. בשביל לדחות את הטיימר לפי ההוראות של מיקרוספט מספיק<br />
esFlags = EXECUTION_STATE.ES_CONTINUOUS Or  EXECUTION_STATE.ES_SYSTEM_REQUIRED</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב10/10/2013 15:11 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/889</link><guid isPermaLink="true">https://tchumim.com/post/889</guid><dc:creator><![CDATA[dovid]]></dc:creator><pubDate>Mon, 29 Jan 2018 10:33:23 GMT</pubDate></item><item><title><![CDATA[Reply to הקפצת ארוע לפני מעבר למצב שינה on Mon, 29 Jan 2018 10:33:23 GMT]]></title><description><![CDATA[<p dir="auto">זה הקוד שעשית ועבד טוב כדי שהמחשב לא ירדם לבד.</p>
<pre><code>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
</code></pre>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב10/10/2013 14:58 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/888</link><guid isPermaLink="true">https://tchumim.com/post/888</guid><dc:creator><![CDATA[רחמים]]></dc:creator><pubDate>Mon, 29 Jan 2018 10:33:23 GMT</pubDate></item><item><title><![CDATA[Reply to הקפצת ארוע לפני מעבר למצב שינה on Mon, 29 Jan 2018 10:33:23 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%A8%D7%97%D7%9E%D7%99%D7%9D">@<bdi>רחמים</bdi></a></p>
<blockquote>
<p dir="auto">ג. גם כדי לנטרל הירדמות אוטומטית אחר כמה דקות הפונקציה לא מועילה אם קוראים לה פעם אחת בלבד.<br />
למסקנה:<br />
יש להפעיל טיימר שקורא לפונקציה בתדירות גבוה כמה פעמים בשניה. ואז המחשב לא עובר למצב שינה בצורה אוטומטית, אבל כן יעבור למצב שינה ע''י לחצן שינה.</p>
</blockquote>
<p dir="auto">גם אם בדקת היטב את הפונקציה (וקראת לפונקצייה PowerSaveOff ולא לשנייה עד תום הדחיסה),<br />
עדיין אל תעשה "מסקנות". לעצמך עשה מה שאתה רוצה, אבל אין זה אומר שזה הדרך היחידה.</p>
<p dir="auto">מה יכול להיות? לא יודע. נסה להחליף את הערך הזה: &amp;H1 בזה &amp;H40.</p>
<p dir="auto">כדי למנוע מהמשתמש להכניס לישון ידנית זה דורש מן הסתם הרשאות מנהל.<br />
אינני יודע לעת עתה על דרך לזה.</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב10/10/2013 14:21 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/887</link><guid isPermaLink="true">https://tchumim.com/post/887</guid><dc:creator><![CDATA[dovid]]></dc:creator><pubDate>Mon, 29 Jan 2018 10:33:23 GMT</pubDate></item><item><title><![CDATA[Reply to הקפצת ארוע לפני מעבר למצב שינה on Mon, 29 Jan 2018 10:33:23 GMT]]></title><description><![CDATA[<p dir="auto">א. תודה רבה!</p>
<p dir="auto">ב.  הפונקציה לא מועילה כאשר לוחצים בתפריט התחל על שינה.</p>
<p dir="auto">ג. גם כדי לנטרל הירדמות אוטומטית אחר כמה דקות הפונקציה לא מועילה אם קוראים לה פעם אחת בלבד.</p>
<p dir="auto">למסקנה:<br />
יש להפעיל טיימר שקורא לפונקציה בתדירות גבוה כמה פעמים בשניה. ואז המחשב לא עובר למצב שינה בצורה אוטומטית, אבל כן יעבור למצב שינה ע''י לחצן שינה.</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב10/10/2013 13:56 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/886</link><guid isPermaLink="true">https://tchumim.com/post/886</guid><dc:creator><![CDATA[רחמים]]></dc:creator><pubDate>Mon, 29 Jan 2018 10:33:23 GMT</pubDate></item><item><title><![CDATA[Reply to הקפצת ארוע לפני מעבר למצב שינה on Mon, 29 Jan 2018 10:33:22 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/%D7%A8%D7%97%D7%9E%D7%99%D7%9D">@<bdi>רחמים</bdi></a></p>
<blockquote>
<p dir="auto">אצלי בוינדוס 7 מוגדר שאחרי שלוש דקות ללא פעילות המחשב הולך לישון, כאשר הוא על סוללה.<br />
הפעלתי תוכנה שכתבתי שדוחסת לזיפ כמות גדולה של קבצים ותוך כדי פעולה המחשב הלך לישון, כשהוא התעורר קיבלתי הודעת שגיאה שאי אפשר להמשיך לכתוב את הזיפ, כיון שההתקן החיצוני שבו נשמר הזיפ מתנתק בזמן שינה ומתחבר מחדש בהתעוררות.</p>
</blockquote>
<p dir="auto">זה הקוד שיש שמסתובב באינטרנט, אני לא יכול לנסות, תנסה אתה:</p>
<pre><code>Private Declare Function SetThreadExecutionState Lib "kernel32" (ByVal esFlags As EXECUTION_STATE) As EXECUTION_STATE
Public Enum EXECUTION_STATE As Integer
    ES_CONTINUOUS = &amp;H80000000
    ES_DISPLAY_REQUIRED = &amp;H2
    ES_SYSTEM_REQUIRED = &amp;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
</code></pre>
<p dir="auto">קריאה לPowerSaveOff אמורה לנטרל את ההירדמות האוטומטית.<br />
כשגומרים את הפעולה, לקרוא לPowerSaveOn כדי להחזיר את המצב הרגיל.</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב10/10/2013 11:29 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/885</link><guid isPermaLink="true">https://tchumim.com/post/885</guid><dc:creator><![CDATA[dovid]]></dc:creator><pubDate>Mon, 29 Jan 2018 10:33:22 GMT</pubDate></item><item><title><![CDATA[Reply to הקפצת ארוע לפני מעבר למצב שינה on Mon, 29 Jan 2018 10:33:22 GMT]]></title><description><![CDATA[<p dir="auto">אצלי בוינדוס 7 מוגדר שאחרי שלוש דקות ללא פעילות המחשב הולך לישון, כאשר הוא על סוללה.<br />
הפעלתי תוכנה שכתבתי שדוחסת לזיפ כמות גדולה של קבצים ותוך כדי פעולה המחשב הלך לישון, כשהוא התעורר קיבלתי הודעת שגיאה שאי אפשר להמשיך לכתוב את הזיפ, כיון שההתקן החיצוני שבו נשמר הזיפ מתנתק בזמן שינה ומתחבר מחדש בהתעוררות.</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב09/10/2013 21:57 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/884</link><guid isPermaLink="true">https://tchumim.com/post/884</guid><dc:creator><![CDATA[רחמים]]></dc:creator><pubDate>Mon, 29 Jan 2018 10:33:22 GMT</pubDate></item><item><title><![CDATA[Reply to הקפצת ארוע לפני מעבר למצב שינה on Mon, 29 Jan 2018 10:33:22 GMT]]></title><description><![CDATA[<p dir="auto">איך בדקת עם מה שעשית עובד?<br />
ניסית לעשות ידנית מצב שינה, או שהמתנת עד שיחלוף הפרק זמן והמחשב הלך לישון?<br />
ובאיזה מערכת הפעלה אתה בודק?</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב09/10/2013 15:21 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/883</link><guid isPermaLink="true">https://tchumim.com/post/883</guid><dc:creator><![CDATA[dovid]]></dc:creator><pubDate>Mon, 29 Jan 2018 10:33:22 GMT</pubDate></item><item><title><![CDATA[Reply to הקפצת ארוע לפני מעבר למצב שינה on Mon, 29 Jan 2018 10:33:21 GMT]]></title><description><![CDATA[<p dir="auto">אולי מישהו בכל זאת יודע?<br />
שמתי לב למשל שאע''פ שהמחשב שלי מוגדר לעבור למצב שינה לאחר מספר דקות ללא פעילות, אם יש מנגינה מושמעת במדיה פלייר הוא לא עובר למצב שינה, לאומת זאת כאשר אני דוחס לZIP ע''י ICSharpCode.SharpZipLib.Zip המחשב כן הולך לישון  באמצע התהליך, והבעיה היא שכאשר הוא מתעורר הדחיסה לא יכולה להמשיך כי ע''י השינה התנתק הקשר עם הדיסק החיצוני ששם התבצעה פעולת הדחיסה.<br />
מה עושים? רבותי תנו עצה!!</p>
<p dir="auto">תודה לכולם!</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב08/10/2013 20:51 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/882</link><guid isPermaLink="true">https://tchumim.com/post/882</guid><dc:creator><![CDATA[רחמים]]></dc:creator><pubDate>Mon, 29 Jan 2018 10:33:21 GMT</pubDate></item><item><title><![CDATA[Reply to הקפצת ארוע לפני מעבר למצב שינה on Mon, 29 Jan 2018 10:33:21 GMT]]></title><description><![CDATA[<p dir="auto">ראיתי שמדברים על <a href="http://stackoverflow.com/questions/823937/how-do-i-cancel-standby-and-hibernate" target="_blank" rel="noopener noreferrer nofollow ugc">SetThreadExecutionState function</a> כמי שאמור לעזור בזה.<br />
אם יש למישהו דרך ברורה איך להשתמש בפונקציה זו בVB לביטל שינה אודה לו מאוד.</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב22/08/2013 19:34 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/881</link><guid isPermaLink="true">https://tchumim.com/post/881</guid><dc:creator><![CDATA[רחמים]]></dc:creator><pubDate>Mon, 29 Jan 2018 10:33:21 GMT</pubDate></item><item><title><![CDATA[Reply to הקפצת ארוע לפני מעבר למצב שינה on Mon, 29 Jan 2018 10:33:21 GMT]]></title><description><![CDATA[<p dir="auto">כאשר השתמשתי בארוע  SystemEvents.PowerModeChanged<br />
ההודעה קפצה אבל אי אפשר אפילו לראות אותה רק לאחר ההתעוררות.<br />
אני מעוניין שלפני המעבר לשינה יקפוץ הארוע, ואז  יהיה משהו כמו  e.Cancel = True שיבטל את השינה , תיקפוץ הודעה שתשאל את המשתמש אם הוא מעוניין לעבור לשינה כעת או לדחות את השינה. אם המשתמש ירצה בשינה התוכנית תעשה את ההכנות הדרושות מבחינתה כדי לא להשתבש לאחר ההתעוררות, ותעבור למצב שינה ע''י  Application.SetSuspendState ואם לא, התוכנית תמשיך כרגיל.</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב20/08/2013 11:36 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/880</link><guid isPermaLink="true">https://tchumim.com/post/880</guid><dc:creator><![CDATA[רחמים]]></dc:creator><pubDate>Mon, 29 Jan 2018 10:33:21 GMT</pubDate></item><item><title><![CDATA[Reply to הקפצת ארוע לפני מעבר למצב שינה on Mon, 29 Jan 2018 10:33:20 GMT]]></title><description><![CDATA[<p dir="auto">שא"א לבטל זה אפשר להבין. אתה מעוניין לבטל?<br />
והודעה, מה פירוש א"א? היא מופיעה רק לאחר השינה?</p>
<p dir="auto"><em>פורסם במקור בפורום CODE613 ב20/08/2013 11:21 (+03:00)</em></p>
]]></description><link>https://tchumim.com/post/879</link><guid isPermaLink="true">https://tchumim.com/post/879</guid><dc:creator><![CDATA[dovid]]></dc:creator><pubDate>Mon, 29 Jan 2018 10:33:20 GMT</pubDate></item></channel></rss>