03-10-12, 09:52 AM
كاتب الموضوع : VbDotNeter
بسم الله الرحمن الرحيم تعلم كيف تصنع HotKey باي مفتاح يعجبك حتي الموس لبرنامجك(طريقة سهلة جدا)
هل ودت يوما ان تصنع لبرنامج مفتاح او عددة مفاتيح مجتمعة لعمل شئ معين لبرنامجك؟؟
هناك الكثير من الطرق
اولها عمل Hook وهذا ليس سهل و وليس مصمم للعمل علي الدوت نت لانه Managed
ثانيها استخدام ايه بي اي RegisterHotKey وهذا لم اجربه شخصيا
ثالثا و هو درسنا اليوم GetAsyncKeyState الذي يعطيك هل المفتاح المحدد مضغوط ام لا
ضع هذا الكود في التعريفات في الكلاس:
كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]Public Declare Function [/color][color=#0000bb]GetAsyncKeyState Lib [/color][color=#dd0000]"user32.dll" [/color][color=#007700]([/color][color=#0000bb]ByVal vKey [/color][color=#007700]As [/color][color=#0000bb]Int32[/color][color=#007700]) As [/color][COLOR=#0000bb]UShort
[/COLOR][/COLOR]
ضع هذه الوظيفة:
كود :
[color=#000000][COLOR=#0000bb] [/color][color=#007700]Public [/color][color=#0000bb]Shared [/color][color=#007700]Function [/color][color=#0000bb]IsKeyPushedDown[/color][color=#007700]([/color][color=#0000bb]ByVal vKey [/color][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Windows[/color][color=#007700].[/color][color=#0000bb]Forms[/color][color=#007700].[/color][color=#0000bb]Keys[/color][color=#007700]) As [/color][COLOR=#0000bb]Boolean
[/COLOR][color=#007700]Return [/color][color=#0000bb]0 [/color][color=#007700]<> ([/color][color=#0000bb]GetAsyncKeyState[/color][color=#007700]([/color][color=#0000bb]CInt[/color][color=#007700]([/color][color=#0000bb]vKey[/color][color=#007700])) And &[/color][color=#0000bb]H8000[/color][COLOR=#007700])
[/COLOR][color=#0000bb]End [/color][COLOR=#007700]Function
[/COLOR][color=#0000bb][/color][/COLOR]
الاستخدام:
ضع تايمر علي الفورم وضعه علي 10 ميلي ثانية وهذا لفحص حالة المفتاح المراد باستمرار
كود :
[color=#000000][COLOR=#0000bb][/color][color=#007700]Private [/color][color=#0000bb]Sub Timer5_Tick[/color][color=#007700]([/color][color=#0000bb]ByVal sender [/color][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]Object[/color][color=#007700], [/color][color=#0000bb]ByVal e [/color][color=#007700]As [/color][color=#0000bb]System[/color][color=#007700].[/color][color=#0000bb]EventArgs[/color][color=#007700]) [/color][color=#0000bb]Handles Timer5[/color][color=#007700].[/color][color=#0000bb]Tick[/color][COLOR=#007700][
If [/COLOR][color=#0000bb]IsKeyPushedDown[/color][color=#007700]([/color][color=#0000bb]Keys[/color][color=#007700].[/color][color=#0000bb]MButton[/color][color=#007700]) = [/color][COLOR=#0000bb]True Then
End [/COLOR][COLOR=#007700]If
[/COLOR][COLOR=#0000bb]End Sub
[/COLOR][/COLOR]
'ضع هنا كودك الذي سيحدث عند الضغط علي الزر الوسطي للماوس
'يمكنك استخدام اي مفتاح يحلو لك
ملاحظة: اذا كنت تعتقد ان التايمر سيسبب بطئ لبرنامج يمكن وضع الكود في Thread Timer جديد خاص
اتمني ان تكونوا استفدتوا من الدرس
وشكرا