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

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

مغلق
بدأه lover1983 في 25 أكتوبر 2004 · 10 رد · 1,583 مشاهدة · في الأسئلة المجابة
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

بسم الله الرحمن الرحيم

سلام عليكم شباب وشهر كريم وكل عام وأنتم بخير .....

أرجوا منكم شباب بالتكرم على مساعدتي لحل هذه المشكلة بلغة سي++

أريد بإستخدام لغة السي++ أن أشغل Enable

وكذلك أن أطفي Disable

الزرات الموجودة على لوحة المفاتيح التي تضي وهذه الزرارات كالأتي:

Num LOCK

Caps LOck

Scroll Lock

وذلك بإستخدام لغة السي ++ بدون الحاجة إلى تشغيلها وإطفائها يدوياً..

وشكراً جزيلاً لكل من أضاع ثانية واحدة من وقته لمساعداتي..

أخوكم

إبراهـــيـــم

#2

لا أعلم كيفية قفل وفتحها لكن أعلم ما هي حالة كل لمبه

#include "windows.h"
#include "iostream.h"

int main(int argc, char* argv[])
{
short s_VK_SCROLL,s_VK_NUMLOCK,s_VK_CAPITAL;

s_VK_SCROLL = GetKeyState(VK_SCROLL);
s_VK_NUMLOCK = GetKeyState(VK_NUMLOCK);
s_VK_CAPITAL = GetKeyState(VK_CAPITAL);

if(s_VK_SCROLL == 1){cout << "scrol llock is on"<<endl;}else{cout << "scro lllock is off"<<endl;}
if(s_VK_NUMLOCK == 1){cout << "num lock is on"<<endl;}else{cout << "num lock is off"<<endl;}
if(s_VK_CAPITAL == 1){cout << "caps lock is on"<<endl;}else{cout << "caps lock is off"<<endl;}

	return 0;
}
#3

السلام عليكم,

لإطفاء مثل هذه الأزرار يمكن أن نعمل الطريقة التالية :

نقرأ حالة الأزرار كلها . نغير حالة الزر التي نريد ثم نكتب هذه الحالة الجديدة وقد استعملت في هذه الطريقة دوال الآبي.

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

والبرنامج يكون كما يلي :

#include <iostream.h>
#include <windows.h>
void main()
{
	BYTE pkeys[256];
	GetKeyboardState(pkeys);
	pkeys[0X90]=0;
	SetKeyboardState(pkeys);


}

الرقم 0x90 هو لزر Num وكما ذكرت يجب تشغيل البرنامج مرتين في المرة الثانية تضهر أمور البرنامج ولا أدري إن كان هذا خطء في هذا الجهاز .

إلى اللقاء.

#4

شكراً شباب على هذه المعلومات القيمة

وشكراً للمشاركة وتفعيل الموضوع......

#5

أخي v1r05 وchik

لقد قمت بتنفيذ برنامجكما لكن لغة السي++

تخبرني بإن الملف الدليلي winsows.h

غير موجود وبالتالي كل الدول تكون غير معرفة ...

أرجوا فقط إرسال لي الملف الدليلي

windows.h

وسأكون شاكراً.......

#6

هذا هو الملف ومعاه البرنامج كاملاً بـ mfc

v1r05.zip

#7

شكراً اخي الكريم

وصل الملف الدليل ....

وجميل ما أنساه ...

#8

السلام عليكم

شخصياً لم أحاول من قبل في هذا الموضوع , لكن حسب كلام MSDN Help :

اقتباس
emarks

Because the SetKeyboardState function alters the input state of the calling thread and not the global input state of the system, an application cannot use SetKeyboardState to set the NUM LOCK, CAPS LOCK, or SCROLL LOCK indicator lights on the keyboard.

طبعاً هذا لا ينفي ان ما قاله الاخ Chik غير معقول ذلك انه وفي هذه الوصلة قد تجد تفسيراً لما حصل معك

BUG: Multiple SendKeys Statement Turns Off NumLock Key

http://support.microsoft.com/?kbid=179987

أظن نفس شئ حصل معك بالنسبة للدالة SerKeyboardState .

طبعا لانه ليس لدي اي C compiler فلم استطع التأكد . عندما جربت الدلفي كان كلام MSDN صحيحاً . لا أعلم ان كانت الـ Bug الموجودة فوق قد عدلت ام لا ...

بالنسبة لايجاد طريقة صحيحة لحل الموضوع فما زلت لا اعلم عنها شيئاً ..

CIONO1

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

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

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

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

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

#9

Back again

You may check this article

http://support.microsoft.com/kb/177674/EN-US

You can notice that SetKeyboardState is for win95/98/me . For NT family OS you have to simulate a key press

Hope it helps you

CIONO1

تم تعديل هذه المشاركة بواسطة tmaaa في 30 أكتوبر 2004 في 19:38

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

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

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

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

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

#10

سلام عليكم شباب

إذا أردنا أن نحل نفس المشكلة ولكن بإستخدم لغة

التربو سي++

أيش نستخدم من دوال وشكراً جزيلاً

أرجوا ان تعذروني لإن طلب الدكتور كان بالتربو سيز...

#11

السلام عليكم

الطرق المذكورة سابقا under windows ويبدو أنك تريدها under dos

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

http://www.shedai.net/c/karisik/ledc.c

http://www.ee.oulu.fi/research/tklab/cours...2004/ex2-sol1.c

http://www.mit.edu/afs/sipb/project/sipb-a...cs/src/dosfns.c

http://www.eunet.bg/simtel.net/msdos/keyboard.html

عذراً فليس لدي TC++ لأجرب , لكن أظن انك ستجد الحل في تلك الوصلات أو ابحث عن غيرها في google

انتظر ردود أخرى من الأخوة ...

Best regards

CIONO1

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

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

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

There, even in dreams u r wanted

To be a programmer, how a nice dream it was

Leaving ...

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

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

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