كنت عاييز اعمل اسكرين سيفر للبرنامج مع الويندوس يعني لو المؤشر متحركش لمدة دقيقة اقفل البرنامج
هل ممكن اعرف اذا كان الموس يتحرك ام ثابت
السلام عليكم
هذه طريقة بسيطة كتبتها في دقيقة ولم أختبرها جيدا .. وبالتالي لا تلومني علي شيء إذا لم تنجح ..
Dim bStatus As Boolean Dim XX As Single, YY As Single Dim sec As Byte Private Sub Form_Load() Timer1.Interval = 1000 End Sub Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single) If XX <> X And YY <> Y Then bStatus = True Me.Caption = "الماوس يتحرك" XX = X: YY = Y sec = 0 Else bStatus = False Me.Caption = "الماوس ثابت" End If End Sub Private Sub Timer1_Timer() sec = sec + 1 If sec = 60 And Not bStatus Then End End Sub
فقط إذا أردت تعميمها .. بحيث لا تكون علي مستوي الفورم فقط .. ..
فستحتاج إلي دالة مثل GetCursorPos لمعرفة إحداثيات الماوس الحالية..
وتضعها تحت تيمر بانترفال صغير .. وتقوم بعمل نفس المقارنة السابقة .. بين إحداثيات أخر نفطة وإحداثيات النقطة الجديدة إذا وجدت..
ربما تريد مراجعة برنامج API Guide لهذا الأمر
تم تعديل هذه المشاركة بواسطة Pharaonic_Guy في 26 نوفمبر 2007 في 06:13
شكران علي المساعدة انا هرجرب الفكرة بتعتك
يوجد نقص في الفكرة فلو الموس خج من اطار الفورم يحدث مشكلة لو في امكانية تتعمل مع الوندوس وشكران
ما قلتلك يا كبير ..لو عايز تعممها وتكون مش علي مستوي الفورم فقط استخدم دالة getcursorposition
وهذا هو الكود بعد استخدام الدالة .. ولا يوجد اختلاف كبير .. فالطريقة واحدة ..
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long Private Type POINTAPI X As Long Y As Long End Type Dim pNew As POINTAPI Dim pOld As POINTAPI Dim bStatus As Boolean Dim sec As Byte Private Sub Form_Load() Timer1.Interval = 10 Timer2.Interval = 1000 End Sub Private Sub Timer1_Timer() GetCursorPos pNew If pOld.X <> pNew.X And pOld.Y <> pNew.Y Then bStatus = True Me.Caption = "الماوس يتحرك" pOld.X = pNew.X: pOld.Y = pNew.Y sec = 0 Else bStatus = False Me.Caption = "الماوس ثابت" End If End Sub Private Sub Timer2_Timer() sec = sec + 1 If sec = 60 And Not bStatus Then End End Sub
هذا الموضوع مغلق.