منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
تعلم كيف تصنع HotKey باي مفتاح يعجبك حتي الموس لبرنامجك(طريقة سهلة جدا) - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم مقالات VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=184)
+--- الموضوع : تعلم كيف تصنع HotKey باي مفتاح يعجبك حتي الموس لبرنامجك(طريقة سهلة جدا) (/showthread.php?tid=4979)



تعلم كيف تصنع HotKey باي مفتاح يعجبك حتي الموس لبرنامجك(طريقة سهلة جدا) - RaggiTech - 03-10-12

كاتب الموضوع : 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 جديد خاص

اتمني ان تكونوا استفدتوا من الدرس
وشكرا