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

التحكم في لوحة المفاتيح

مغلق
بدأه بن العيد في 1 نوفمبر 2007 · 2 رد · 3,199 مشاهدة · في برمجة الأجهزة الكفية والمحمولة بالدوت نيت
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

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

post-91400-1193919588_thumb.jpg

KeyboardHook.zip

الجزء الرئيسي من الكود هو كما يلي

			   protected override void OnKeyDown(KeyEventArgs e)
				{
				   switch (e.KeyCode)
					{   case (Keys.Up): /* do something*/ break;
						case (Keys.Down): /* do something*/ break;
						case (Keys.Left): /* do something*/ break;
						//........
					}
			   base.OnKeyDown(e);
				}

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

post-91400-1193920784_thumb.jpg

وفق الإتجاه الذي تم تفعيله من خلال إختيار أحد أزرار الإتجاهات قمت بتحريك الصورة الموجودة وسط الشاشة في حدود معينة

ويمكن أيضا قراءة حال زر ما في لوحة المفاتيح بإعتماد إحدى الدالتان :GetKeyState , GetAsyncKeyState واللتان يتم تعرفهما بالكيفية التالية.

	 [DllImport("coredll.dll")]
	 public static extern int GetAsyncKeyState(int vkey);

	 [DllImport("coredll.dll")]
	 private extern static short GetKeyState(int nVirtKey);

وأخيرا أضفت الدالة SipShowIM لفتح أو إغلاق لوحة المفاتيح وفق قيمة المدخل

  [DllImport("coredll.dll")]
 public extern static void SipShowIM(uint dwFlag);

post-91400-1193920519_thumb.jpg

#2

هل يمكن لهذا التنصت الغاء تنصت النظام الى الازرار؟

مثلا هناك ازرار اضافية مثل الكاميرا و مسجل الصوت وحتى مشغل انترنت اكسبلولر

جديد مدونتي الشخصية http://www.badwi.com

ادعو لنا بظاهر الغيب

MyBooksExchange.jpg

#3

السلام عليكم

يمكن تطبيق ذلك عند الإستعمال الفعلي وفي محله لكلمة Hook . لأن المثال الذي وضعته هنا هو عبارة كيفية إستغلال الحدثkeypressed أوkeydown

هذه الدوال اللازمة للقيام بذلك:

SetWindowsHookEx

CallNextHookEx

UnhookWindowsHookEx

ويوجد مثال في هذا الرابط

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

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

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