الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

عمل Screen Server ولكن خاصة

مغلق
بدأه العريق في 10 يونيو 2005 · 13 رد · 1,388 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم ...

لدي برنامج مكون من نموذج MDI ومجموعة نماذج Children عددها يفوق 10 ... وهي ليست على شكل Array of tool ...

ما أريده هو :

أريد من البرنامج أن يغلق إذا مضت فرته زمنية معينة على البرنامج من دون أي حركة من المستخدم .. أي لا حركة للفأره ولا نقره على الفأره ...

أريد أن يكون الكود لا يحتاج كتابته في جميع النماذج الفرعية Child ...

هل أجد المساعد ؟؟؟ ...

تحياتي ...

#2

أخي الكريم يمكنك أن تستخدم أداة التايمر Timer

ما عليك هو أن تظبط خاصية Invert إلى الوقت الذي تريد أن يغلق بعده

وتكتب الكود في حدث Timer لأداة الـ Timer

Private Sub Timer1_Timer()
Unload Me
End Sub

تم تعديل هذه المشاركة بواسطة COMFORT في 10 يونيو 2005 في 20:45

مواضيع و دروس
الكتابة بعدة ألوان داخل الــ TetxBoxمكتبة الأكوادتحميل الــ Visual Basic Express 2005
تحميل فيجوال بسيك 6أكواد × أكواددروس في الخوارزميات
لتحميل عدة إصدارات من كريستال ريبورتتحميل برنامج Activ Skin 4.3جمل الــ Sql من الألف إلى الياء
معظم المواقع المختصة بالفيجوال بيسيكموقع كويس للأيقوناتمرجع شامل لأدوات ActivX
كيفية نطق الحرف المكتوب شرح عن كيفية إقامة علاقة مع Data Reprot باستخدام الــ DataEnvironment علاقة مع الـ Datareport بدون استخدام DataEnvironment (( شرح ))
كتاب Migrating From DAO to ADOإضافة لـ VB6 بريمج IndenterVB, إضافة لبيئة تطوير فيجوال بيسك 6حوار بينى و بين عضو حول ال winsock , اتمنى ان يعجبكم
Smart Indenter 3.5 لتنسيق الأكواد, هديه لكل الأعضاء السلسلة الدهبية في المواضيع العلمية ، إستغلال الـ Balloons في الـ Windows XP مصفوفات الأدوات Control Arrays افكار وتلميحات ! , لمن افتقدها من أيام الـ VB6.0
جعل خلفية الـ Mid Form تظهر بالكامل خواص الاداة Winsock لربط الاجهزة عن طريق الانترنتكيف يتم عمل تقارير بإستخدام HTML

7.gif
#3

الله يهديك عزيزي COMFORT ..

الذي قلته لا حل المسألة .. أعلم بأن الكود سيغلق النموذج بعد فرته تحدد داخل Timer ...

ما أريده هو :

كيف أجعل التايمر يبدأ عند توقف الفأره والكيبورد من التحرك أو أعطاء أوامر .. وذلك داخل MDI Envermintes ...

أي أن حركة الفأره ومدخلات الكيبورد سوف تستلم من جميع النماذج الفرعية Child...

وشكراً لك على الرد ...

تحياتي ...

#4

بسيطة عادي خالص

يعني شغل التايمر على 10000 مثلاً تمااااام

وبعدين عند حركة الماوس أو ضغط كيبورد أعطة القيمة ثانية هل تفهم ما أقصد

ولو تريد مثال أنا حاضر

#7

السلام عليكم ورحمة الله وبركاته ...

الأخ العزيز بلال حمدي .. شكراً لك على تفاعلك وعلى المثال ...

عزيزي .. ما قلته أعرفه .. وهو ممكن التنفيذ على Form واحد فقط .. أي حركة الفأرة محسوبة على Form واحد فقط ...

ما أريده هو جعل الحساب على جميع النماذج Forms في حالة النماذج الـ Child ...

أريده أن يكون كود بسيط لا يحتاج للتكرير على جميع النماذج الفرعية ...

أتمنى أن تكون الصورة واضحة ...

على فكره .. ماهو المصطلح الذي يستخدم في هذا المنتدى للـ Form و MID Form ؟؟؟

تحياتي ...

#8

أخي العزيز عبدالكريم ...

شكراً لك على اللنك .. ولكن كما قلت للأخ بلال حمدي ...

فهذا ليس ما أريده ...

لقد قمت بتصميم برنامج حافظ شاشات من قبل ولكن لم أواجه مثل هذه المشكلة لأنه كان على Form واحد ...

شكراً مره آخرى ...

تحياتي ...

#9
اقتباس
أريده أن يكون كود بسيط لا يحتاج للتكرير على جميع النماذج الفرعية ...

أعتقد أنه ليس هناك حل غير التكرار لكن سيكون تايمر واحد في الـ Form الأول طبعاً

بالتوفيق

سلااااااااااام

#10

الحل الذي أراه هو استعمال دوال الApi مثل الامثلة التي تعمل بالتجسس على الكيبورد والموس والدوال معروفة للجميع وجعل متغير يراقب تغير هذه الحركات لكي يشغل التايمر او يوفقه

وبهذا يمكنك الاستغناء عن أحداث الفورم وتكرار الكود

والله أعلم

#11

بلال في المقدمه

#12

الأخ العزيز DreamNet ...

نعم هذا هو الحل الأمثل .. لقد أصبت الهدف ..

يعطيك العافية عزيزي ..

بس بغيت منك شيئ واحد :

ما هي الدوال التي تنصح باإستخدامها في هذه الحالة ؟؟

ولكم مني التحية والإكرام ...

تحياتي ...

#13

فعلا فكرة جيدة

وللمساعدة لدي لك مثال رائع أرجو ان الأخ يقصده

Hook.zip

#14

أخى العريق

اليك الدوال التى تريدها مع المثال

أولا الدوال :

------------

1- GetAsyncKeyState : وهى لمعرفة حالة زر معين من أزرار الكيبورد ( 0 الى 255) مع دوارة Loop تستطيع معرفة حالة جميع أزرار الكيبورد كما فى المثال

2 - GetCursorPos : وهى لمعرفة مكان المؤشر الحالى للماوس وإذا قارنت المكان الحالى للماوس بالمكان السابق تستطيع استنتاج إذا تحرك الماوس أم لا

ثانيا شرح المثال

---------------------

أضف 4 Timer إلى ال Form وأسمائهم كالتالى

1- tmrKeyboard : لمعرفة حالة الكيبورد

2- tmrMouse : لمعرفة حالة الماوس

3- tmrCheck : للتأكد من الحالتين معا

4 - tmrTime : إنهاء البرنامج بعد مدة محددة ( قيمة ال Interval )

واليك الكود الذى يشرح نفسه بالإضافة الى التعليق ( اضف الكود كما هو )

Private Type POINTAPI
    X As Long
    Y As Long
End Type

Private Declare Function GetAsyncKeyState Lib "user32" (ByVal vKey As Long) As Integer
Private Declare Function GetCursorPos Lib "user32" (lpPoint As POINTAPI) As Long

Dim LastMouseX As Integer
Dim LastMouseY As Integer

Dim TheKeyState As Boolean
Dim TheMouseState As Boolean

Dim CurPoint As POINTAPI

Private Sub Form_Load()
tmrKeyBoard.Interval = 1
tmrMouse.Interval = 1
tmrCheck.Interval = 1
tmrTime.Interval = 5000
End Sub

Private Sub tmrKeyBoard_Timer()
Dim retVal As Long

For i = 0 To 255
    retVal = GetAsyncKeyState(i)
    'إذا كان أحد الازرار مضغوط
    If retVal = -32767 Then
        'إذا الكيبورد يعمل
        TheKeyState = True
        Exit Sub
    End If
Next i

'إذا كانت كل الازرار غير مضغوطة إذا الكيبورد لا يعمل
TheKeyState = False
End Sub

Private Sub tmrMouse_Timer()
GetCursorPos CurPoint
'مقارنة بين الاحداثيات الحالية مع السابقة
If CurPoint.X <> LastMouseX Or CurPoint.Y <> LastMouseY Then
'إذا لم يتساوا إذا فالماوس يعمل
TheMouseState = True
'الاحتفاظ بقيمة الاحداثيات الحالية حتى يتم مقارنتها فيما بعد
LastMouseX = CurPoint.X
LastMouseY = CurPoint.Y
'الخروج إذا كان الماوس يعمل
Exit Sub
End If

' طالما وصلنا إالى هذا السطر فإن الماوس لا يعمل
TheMouseState = False
End Sub

Private Sub tmrCheck_Timer()

If TheKeyState = False And TheMouseState = False Then
    'تشغيل العداد إذا كان الكيبوردو الماوس لا يعملان
    tmrTime.Enabled = True
Else
    'غلق العداد إذا كان أحدهما أو كلاهما يعملان
    tmrTime.Enabled = False
End If
'حتى ترى بنفسك القيم عند تحريك الماوس أو استخدام الكيبورد
Debug.Print CStr(TheKeyState) + " , " + CStr(TheMouseState)
End Sub

Private Sub tmrTime_Timer()
'انهاء البرنامج إذا تم الوصول لمدة التيمر إنترفال
End
End Sub

انتظر خمس ثوانى بدون تحريك الماوس أو استخدام الكيبورد و سيغلق البرنامج تلقائيا

أرجو ان تكون وصلت الى مرادك :)

1- لا خير في حسن الجسوم وطولها إن لم يزن حسن الجسوم عقول

2- لا تنظر إلى صغر الخطيئة .. ولكن انظر إلى عظم من عصيت

3- قد يجمع المال غير آكله . . ويأكل المال غير من جمعه

4- من وثق بالله أغناه ومن توكل عليه كفاه ومن خافه قلت مخافته ومن عرفه تمت معرفته

5- أن تضيء شمعة صغيرة خير لك من أن تنفق عمرك تلعن الظلام

6- لا يحزنك إنك فشلت مادمت تحاول الوقوف على قدميك من جديد

7- صديقك من يصارحك بأخطائك لا من يجملها ليكسب رضاءك

8 - الابتسامة كلمة طيبة بغير حروف

9- لا داعى للخوف من صوت الرصاص .. فالرصاصة التى تقتلك لن تسمع صوتها

10 -- يستطيع الناس أن يعيشوا بلا هواء بضع دقائق وبلا ماء أسبوعين وبلا

طعام حوالى شهرين وبلا أفكار سنوات لا حصر لها

من مواضيعى :

--------------

دروس تعلم كيف تصحح أخطائك بنفسك

برنامج الحائط النارى العربى ---- جديد

برنامج ساعة بالعقارب ------ جديد

لعبة سناك الشهيرة مع الكود

غير نظرتك لل picturebox وانظر ماذا فعلت بها

حمل ملف فلاش على الفورم بكل سهولة

مكتبة تحتوى على 50000 كتاب مجانى معظمها عن الكمبيوتر و البرمجة

برنامج المترجم العربى لترجمة الافلام

هذا الموضوع مغلق.

مواضيع مشابهة