על איזה סוג פריצות מדובר? דרך האינטרנט? או פריצות תוכנה? או פריצות חומרה?
פורסם במקור בפורום CODE613 ב23/08/2013 17:17 (+03:00)
על איזה סוג פריצות מדובר? דרך האינטרנט? או פריצות תוכנה? או פריצות חומרה?
פורסם במקור בפורום CODE613 ב23/08/2013 17:17 (+03:00)
רעיון נפלא!
אז אולי אפשר ליעל את זה עוד וליצור פקד ליסט בוקס מותאם אישית שפונקציית ADD שלו לא תיבא לליסטבוקס אלא לליסט
וממילא כל פעם שאני אעשה ADD בתוכנית - יקפוץ הארוע. בקיצור לעטוף את הליסטבוקס והליסט ביחד וכך לקבל את היתרונות של שניהם יחד.
פורסם במקור בפורום CODE613 ב22/08/2013 00:06 (+03:00)
יש לי בתוכנית כמה תיבות רשימה שלאחר שאני מיבא לשם שורות או מוחק שורות אני צריך לבצע כמה שורות קוד קבועות ואני מוצא את עצמי כותב את אותן השורות קוד מחדש עבור כל תיבת רשימה פעמיים לפחות, אחד לאחר שאני מוסיף שורות ואחד לאחר שאני מוחק, חשבתי שארוע שיקפוץ לאחר שמספר השורות בתיבת הרשימה משתנה יוכל לעזור לי, וכך אצור מטפל אחד עבור כל התיבות רשימה שיבצע את שורות הקוד הקבועות.
והשאלה היא איך עושים ארוע כזה?
בתודה לכולם!
פורסם במקור בפורום CODE613 ב21/08/2013 09:43 (+03:00)
אכן כנראה שאתה צודק.
טוב, אז הצלחנו ב''ה שהמחשב מעצמו לא ישן, השאלה אם אפשר גם שכאשר המשתמש ילחץ על לחצן השינה שהוא יקבל הודעה אם הוא בטוח שהוא רוצה לעבור למצב שינה. ותהיה לו הבחירה אם לבטל את המעבר לשינה.
פורסם במקור בפורום CODE613 ב10/10/2013 19:01 (+03:00)
זה הקוד שעשית ועבד טוב כדי שהמחשב לא ירדם לבד.
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)
א. תודה רבה!
ב. הפונקציה לא מועילה כאשר לוחצים בתפריט התחל על שינה.
ג. גם כדי לנטרל הירדמות אוטומטית אחר כמה דקות הפונקציה לא מועילה אם קוראים לה פעם אחת בלבד.
למסקנה:
יש להפעיל טיימר שקורא לפונקציה בתדירות גבוה כמה פעמים בשניה. ואז המחשב לא עובר למצב שינה בצורה אוטומטית, אבל כן יעבור למצב שינה ע''י לחצן שינה.
פורסם במקור בפורום CODE613 ב10/10/2013 13:56 (+03:00)
אצלי בוינדוס 7 מוגדר שאחרי שלוש דקות ללא פעילות המחשב הולך לישון, כאשר הוא על סוללה.
הפעלתי תוכנה שכתבתי שדוחסת לזיפ כמות גדולה של קבצים ותוך כדי פעולה המחשב הלך לישון, כשהוא התעורר קיבלתי הודעת שגיאה שאי אפשר להמשיך לכתוב את הזיפ, כיון שההתקן החיצוני שבו נשמר הזיפ מתנתק בזמן שינה ומתחבר מחדש בהתעוררות.
פורסם במקור בפורום CODE613 ב09/10/2013 21:57 (+03:00)
אולי מישהו בכל זאת יודע?
שמתי לב למשל שאע''פ שהמחשב שלי מוגדר לעבור למצב שינה לאחר מספר דקות ללא פעילות, אם יש מנגינה מושמעת במדיה פלייר הוא לא עובר למצב שינה, לאומת זאת כאשר אני דוחס לZIP ע''י ICSharpCode.SharpZipLib.Zip המחשב כן הולך לישון באמצע התהליך, והבעיה היא שכאשר הוא מתעורר הדחיסה לא יכולה להמשיך כי ע''י השינה התנתק הקשר עם הדיסק החיצוני ששם התבצעה פעולת הדחיסה.
מה עושים? רבותי תנו עצה!!
תודה לכולם!
פורסם במקור בפורום CODE613 ב08/10/2013 20:51 (+03:00)
ראיתי שמדברים על SetThreadExecutionState function כמי שאמור לעזור בזה.
אם יש למישהו דרך ברורה איך להשתמש בפונקציה זו בVB לביטל שינה אודה לו מאוד.
פורסם במקור בפורום CODE613 ב22/08/2013 19:34 (+03:00)
כאשר השתמשתי בארוע SystemEvents.PowerModeChanged
ההודעה קפצה אבל אי אפשר אפילו לראות אותה רק לאחר ההתעוררות.
אני מעוניין שלפני המעבר לשינה יקפוץ הארוע, ואז יהיה משהו כמו e.Cancel = True שיבטל את השינה , תיקפוץ הודעה שתשאל את המשתמש אם הוא מעוניין לעבור לשינה כעת או לדחות את השינה. אם המשתמש ירצה בשינה התוכנית תעשה את ההכנות הדרושות מבחינתה כדי לא להשתבש לאחר ההתעוררות, ותעבור למצב שינה ע''י Application.SetSuspendState ואם לא, התוכנית תמשיך כרגיל.
פורסם במקור בפורום CODE613 ב20/08/2013 11:36 (+03:00)
כידוע מצב שינה יכול לקרות באמצע פעילות של התוכנה ולהפריע ולשבש, ובמיוחד אם המחשב על סוללה ופעילות התוכנה לוקחת כמה דקות עד שפתאום המחשב עובר למצב שינה כדי לשמור על כח הסוללה.
איך אני יכול לעצור את המעבר למצב שינה ולהוציא הודעה למשתמש אם הוא בטוח שהוא רוצה לעבור למצב שינה באמצע פעילות התוכנה וכדומה. ואז לפי מה שהמשתמש יבחר אוכל לטפל בתהליך שיסתיים או ימשיך ללא שיבושים?
יש את הארוע SystemEvents.PowerModeChanged אבל הוא לא נותן לבטל את השינה ולהוציא הודעה.
כידוע יש שני מצבי שינה מקובלים: שינה עם פעילות חשמלית קלה, ושינה עמוקה שהיא כמו כיבוי רק שנשמר המידע. ולפני שניהם אני צריך שהארוע יקפיץ הודעה.
תודה לכולם.
פורסם במקור בפורום CODE613 ב20/08/2013 10:08 (+03:00)
ממש מצויין תודה רבה!
רק מעניין שכאשר מעתיקים קובץ הוא מקפיץ ארוע של Changed כמה פעמים כנראה משום שהקובץ מועתק חלקים חלקים.
פורסם במקור בפורום CODE613 ב20/08/2013 12:21 (+03:00)
איך אני יכול ליצור ארוע שיקפוץ כאשר תיקיה מסויימת משתנית? כמו שדרופבוקס עושים שברגע שקובץ שבתיקיית השיתוף משתנה או נוסף קובץ או נמחק קובץ מיד התוכנה מזהה את זה ומעדכנת בהתאם את המערכת.
תודה לכולם.
פורסם במקור בפורום CODE613 ב20/08/2013 09:56 (+03:00)
@דוד ל.ט.
מה שאתה אומר כתבתי מפורש שאינו פיתרון לדעתי
לפני שאנסה את הפתרונות האחרים: מדוע זה אינו פתרון טוב? הבא ננסה.
פורסם במקור בפורום CODE613 ב20/08/2013 13:52 (+03:00)
@דוד ל.ט.
כנראה הוא משותף (Shared) לכל הApplicationDomain בקיצור, פר אפילקציה. אבל אתה לא תיצור נוספת רק להשמע סימולטנית...
לכן עניתי לך מה שעניתי.
לפי מה שאתה אומר אז הפתרון הוא לעשות טריד לא משותף, לא? וא''כ איך עושים טרידים לא משותפים?
פורסם במקור בפורום CODE613 ב20/08/2013 11:41 (+03:00)
הנה גם זה לא משמיע את שניהם ביחד:
Dim MyThread As Threading.Thread
Dim MyThread2 As Threading.Thread
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
MyThread = New Threading.Thread(AddressOf Play)
MyThread.Start()
Threading.Thread.Sleep(900)
MyThread2 = New Threading.Thread(AddressOf Play2)
MyThread2.Start()
End Sub
Sub Play2()
Dim SP As New System.Media.SoundPlayer()
SP.Stream = File.OpenRead("C:\F.WAV")
SP.Play()
End Sub
Sub Play()
Dim SP As New System.Media.SoundPlayer()
SP.Stream = File.OpenRead("C:\F.WAV")
SP.Play()
End Sub
פורסם במקור בפורום CODE613 ב19/08/2013 22:19 (+03:00)
מה ההבדל בין שני Threads באותה תוכנית לבין תוכנית אחת שנפתחה פעמיים? מדוע הSoundPlayer לא נותן כאן וכן נותן כאן?
פורסם במקור בפורום CODE613 ב19/08/2013 21:32 (+03:00)
כתבתי קוד כזה:
Dim MyThread As Threading.Thread
Private Sub Button2_Click(sender As System.Object, e As System.EventArgs) Handles Button2.Click
MyThread = New Threading.Thread(AddressOf Play)
MyThread.Start()
Threading.Thread.Sleep(1000)
MyThread = New Threading.Thread(AddressOf Play)
MyThread.Start()
End Sub
Sub Play()
Dim SP As New System.Media.SoundPlayer()
SP.Stream = File.OpenRead("C:\F.WAV")
SP.Play()
End Sub
אולם כאשר מתחילה ההשמעה השניה הראשונה נפסקת משום מה, יש לציין שאם אני מריץ את התוכנה כמה פעמים כל תוכנה משמיעה את הקובץ בלא להפסיק את השמעת הקובץ שתוכנה אחרת משמיעה, ואילו בקוד הנ''ל אע''פ שכל השמעה היא ב Thread נפרד הרי שהשמעה אחת מפריעה לשניה.
תודה לכל המסייעים.
פורסם במקור בפורום CODE613 ב16/08/2013 14:25 (+03:00)
תודה רבה רבה!!!
הנה הקוד הסופי:
אני רוצה לציין שהיתי מוכרח לעשות שתי פונקציות שממירות את מיקום העכבר למעלות וכמו שאמרת, אחת עבור הקשת ואחת עבור הכדור האדום, וזאת משום שכאשר הכנסתי לפונקציה את ההתיחסות לצורת מלבן אז הכדור האדום אכן היה תמיד צמוד לעכבר אבל הקשת לא!! ולכן לקשת השארתי את הפונקציה הישנה ולכדור האדום פונקציה עם התיחסות למלבן.
אני משער שהפונקציה שמציירת את הקשת מוסיפה את ההתיחסות למלבן מעצמה ולכן זה משבש אותה.
Public Class Form1
' Create start and sweep angles on ellipse.
Dim startAngle As Single = 40.0F
Dim sweepAngle As Single = 0.0F
Dim RedEllipseAngle As Single
Public Sub New()
' This call is required by the designer.
InitializeComponent()
' Add any initialization after the InitializeComponent() call.
Me.Height = Me.Width * 2
End Sub
Private Sub Form1_Paint(sender As Object,
e As System.Windows.Forms.PaintEventArgs) Handles Me.Paint
' Create pen.
Dim blackPen As New Pen(Color.Black, 3)
' Create rectangle to bound ellipse.
Dim rect As New Rectangle(0, 0, Me.ClientSize.Width, Me.ClientSize.Height)
' Draw arc to screen.
e.Graphics.DrawArc(blackPen, rect, startAngle, sweepAngle)
e.Graphics.FillEllipse(Brushes.Red,
New Rectangle(GetCoordinate(RedEllipseAngle),
New Size(12, 12)))
End Sub
Private Sub Form1_MouseMove(sender As Object,
e As System.Windows.Forms.MouseEventArgs) Handles Me.MouseMove
'שינוי תחילת הקשת על פי הסמן
'startAngle = GetAngle(Me.ClientSize.Width/ 2, Me.ClientSize.Height / 2, e.Location.X, e.Location.Y)
'שינוי אורך הקשת על פי הסמן
sweepAngle = GetAngle(Me.ClientSize.Width / 2,
Me.ClientSize.Height / 2,
e.Location.X,
e.Location.Y) - startAngle
RedEllipseAngle = GetAngle2(Me.ClientSize.Width / 2,
Me.ClientSize.Height / 2,
e.Location.X,
e.Location.Y)
Me.Invalidate()
End Sub
Function GetAngle(ByVal x1 As Single,
ByVal y1 As Single,
ByVal x2 As Single,
ByVal y2 As Single) As Single
Dim xDiff As Single = (x1 - x2)
Dim yDiff As Single = (y1 - y2)
Return (CSng(Math.Atan2(yDiff, xDiff)) * (180 / Math.PI) + 180)
End Function
Function GetAngle2(ByVal x1 As Single,
ByVal y1 As Single,
ByVal x2 As Single,
ByVal y2 As Single) As Single
Dim xDiff As Single = ((x1 - x2) * (Me.ClientSize.Height / Me.ClientSize.Width))
Dim yDiff As Single = (y1 - y2)
Return (CSng(Math.Atan2(yDiff, xDiff)) * (180 / Math.PI) + 180)
End Function
Private Function GetCoordinate(ByVal angle As Single) As Point
Dim Radian As Double = toRadians(angle)
Dim x As Single = (Me.ClientSize.Width / 2) + CSng(Math.Cos(Radian) * (Me.ClientSize.Width / 2))
Dim y As Single = (Me.ClientSize.Height / 2) + CSng(Math.Sin(Radian) * (Me.ClientSize.Height / 2))
Return New Point(x - 6, y - 6)
End Function
Function toRadians(ByVal angle As Single) As Double
Return angle * (Math.PI / 180)
End Function
End Class
פורסם במקור בפורום CODE613 ב19/08/2013 13:42 (+03:00)
אז מה בעצם ההסבר ? איפה הטעות? הרי בקוד שכתבתי אותה המעלה שיש לקשת יש גם לכדור האדום ובכל זאת הם לא צמודים?
פורסם במקור בפורום CODE613 ב19/08/2013 08:45 (+03:00)