منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب

نسخة كاملة : الآن تعلم برمجة مفتاح ساخن HotKey بالفيجوال بيسك دوت نت
أنت حالياً تتصفح نسخة خفيفة من المنتدى . مشاهدة نسخة كاملة مع جميع الأشكال الجمالية .
كاتب الموضوع : م إسماعيل علي النجار

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

كلكم تعرفون المفتاح الساخن والذي يقوم بأمر معين لأحد البرامج
مثلاً عندما تكبس WinLogo + R يشتغل عندك الـ Run
أو عندما تكبس Alt + M لبرنامج TuneUp Memory Optimizer
فيقوم بتنظيف الذاكرة يدوياً...وهناك الكثير من الأمثلة

على كل حال اليوم سنتعلم كيف نبرمج أي مفتاح ونخصصه لبرنامجنا ليقوم بأمر معين

ملاحظة: ستكون البرمجة لـ Visual Basic .Net

بعد ما نقتح مشروعا جديدا سنقوم ببرمجة المفتاح Alt+L

نقوم بتعريف هذه الثوابت ونسند لها القيم:


كود:

Public Const MOD_ALT As Integer = &H1 'لتعريف مفتاح Alt


Public Const VK_L As Integer = &H4C 'لتعريف المفتاح L

Public Const WM_HOTKEY As Integer = &H312


ومن ثم نعرف الدوال التالية:




كود:

'نعرف دوال API التالية


'لتسجيل المفتاح الساخن

Public Declare Function RegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal ID As Integer, ByVal fsModifires As Integer, ByVal vKey As Integer) As Integer

'لحذف المفتاح الساخن

Public Declare Function UnRegisterHotKey Lib "user32" (ByVal hWnd As IntPtr, ByVal ID As Integer) As Integer


سوف نستدعي تلك الدوال لتسجبل المفتاح وحذفه بعد إنهاء البرنامج



الآن نكتب الكود التالي والذي سيقوم بتنفيذ أي أمر عند ضغط المفتاح الساخن:




كود:
Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
If m.Msg = WM_HOTKEY Then



MsgBox(DateTime.Now.Second.ToString)

'ضعالكودالذي يناسبك هنا

End If


MyBase.WndProc(m)

End Sub


الآن وفي حدث Load نضع الكود التالي والذي يقوم بتسجيل المفتاح الساخن:





كود:
RegisterHotKey(Me.Handle, 9, MOD_ALT, VK_L)



كما ترى فإن الثابت MOD_ALT الذي عرفناه مسبقا فيدل على المفتاح


Alt ونستطيع أن تضع مفتاحا أخر مثل Shift أو Ctrl



وانتظر قليلا عزيزي المبرمج فسأزدوك بجدول لتعرف كل المفاتيح على الكيبورد



أما VK_L فهو الثابت الذي يدل على المفتاح L وأيضا تستطيع أن تضع أي مفتاح آخر من خلال الجدول الذي سأعطيك إياه.



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


لذلك نضع في حدث FormClosing الكود التالي:




كود:
UnRegisterHotKey(Me.Handle, 9)



عزيزي المبرمج المشاغب لاحظ الرقم 9 الذي وضعناه في كلا الكودين السابقين


وهذا الرقم هو الذي يميز مقبض نافذة برنامجك عن غيره


وسوف تستخدمه لحذف المفتاح الساخن الخاص بمقبض نافذة برنامجك


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


عند حذف المفتاح قبل إنهاء التطبيق




وبهذا أكون قد أنهيت الشرح وأترككم مع الروابط الملحقة:



رابط لصفحة تحوي جميع تعاريف المفاتيح على الكيبورد:


http://msdn.microsoft.com/en-us/library/aa926323.aspx


عاشق الابداع