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

التحكم بالماوس

مغلق
بدأه mimi في 21 يناير 2002 · 8 رد · 1,861 مشاهدة · في لغة Ms Visual Basic 6 وما قبلها من إصدارات
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم جميعا

هل من الممكن التحكم في الماوس عن طريق برنامج ؟

المقصود هو اذا نقر المستخدم الاسهم يتحرك الماوس تبع للاسهم وذا نقر F2 فإنه ينفذ الزر الايمن وذا نقر F1 فإنه ينفذ الزر الايسر , وهل استطيع التحكم في الماوس خرج البرنامج مثلا على سطح المكتب ؟

#2

السؤال الاول إجابته نعم جرب الكود الاتى

Private Type POINTAPI
    X As Long
    Y As Long
End Type

'Declare the API-Functions
Private Declare Function GetCursorPos Lib "user32" _
(lpPoint As POINTAPI) As Long
Private Declare Function SetCursorPos Lib "user32" _
(ByVal X As Long, ByVal Y As Long) As Long

Private Sub Form_KeyDown(KeyCode As Integer, Shift _
As Integer)
Dim PonPos As POINTAPI
    Call GetCursorPos(PonPos)
 Select Case KeyCode
    Case vbKeyLeft
        PonPos.X = PonPos.X - 5
        Call SetCursorPos(PonPos.X, PonPos.Y)
    Case vbKeyRight
        PonPos.X = PonPos.X + 5
        Call SetCursorPos(PonPos.X, PonPos.Y)
    Case vbKeyUp
        PonPos.Y = PonPos.Y - 5
        Call SetCursorPos(PonPos.X, PonPos.Y)
    Case vbKeyDown
        PonPos.Y = PonPos.Y + 5
        Call SetCursorPos(PonPos.X, PonPos.Y)


End Select

End Sub

السؤال الثانى الثانى والثالث بنفس الطريقه ولكنك ستحتاج لكتابة كود فى حدث

Click وكود أخر فى حدث MouseDown

وتضيف على الكزد السابق الكود الاتى

الحالات التى ترغب فيها من مفاتيح الكيبورد وهذه أتركها لمجهودك وإن لم تتمكن أخبرنى

#3

مشكور جدا يا اخ رمضان

#4

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

المثال السابق يعمل على تحريك مؤشر الماوس عن طريق الكود .. فهل يوجد كود يعمل على تنفيذ زر الماوس الايمن و الايسر عن طريق الكود ؟

أخوك

خالد

http://3kd.dk3.com

#5

السلام عليكم

* عذرا على التدخل في شئون الاخوة في الفيجوال بيسك :)

الأخ prokhaled

جرب استخدام الدالة sendmessage مع ارسال واحده اواكثر من الــ messages الأتية :

WM_LBUTTONDOWN , WM_LBUTTONUP ,WM_LBUTTONDBLCLK ,WM_RBUTTONDOWN ,WM_RBUTTONUP ,WM_RBUTTONDBLCLK .....

جربتها في الدلفي ونجحت :)

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#6

اعتقد انه من الافضل استخدام الدالة mouse_event بدلا من الدالة SendMessage حيث أن الأولى لاتتطلب تمرير مقبض النافذة والذي قد يصعب الحصول عليه في بعض الحالات...

#7

السلام عليكم

الاخ Read Only

ممكن توضح بمثال استخدام mouse_event للتحكم بالماوس خارج البرنامج . أود التعرف على الطريقة :)

مشكور مقدما

هناك حتى الأحلام أصبحت ممنوعة ...

إنه لعار أن ننتمي لهكذا أوطان ... لكن ... ربما العار أن نكون نحن أبناء لتلكم أوطان .. من يدري ؟!!

ليعلم أولئك ... إنّ الشعوب إنْ هي استيقظت تسحق ظُلامََهَا ...

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

أعيدوا لإسمي لونه المفضل

#9

أخ Read Only قرات مثالك واكن إذا سمحتلي لدي بعض الملاحظات .. لماذا لا يتستخد Thread منفصل للقيام بالعملية مع الاستعاضة عن ال Timer ب Wait وهذا أفضل حيث لن يؤثر هذا على برنامجك اطلاقا .

الأمر الثاني استخدام ال System Wide Hook في هكذا أمر غير محبذ فيه لأنه يهلك الجهاز ...

اخواني وخصوصا مبرمجي الفجوال بيسك أرجو عدم استخدام ال System Wide Hook لأنها تجبر النظام من ربط ال DLL في كل process وهذا مايبطئ من الجهاز حتى إن كان حجم ال DLL صغيرا فما بالك إن كان الdll معمول بال VB

Coding on the Cloud and for the Cloud!

My Blog

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

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