كيفية تعديل مقاطعة لوحة المفاتيح (ضمن نظام التشغيل Windows XP) من برنامج C ++؟

StackOverflow https://stackoverflow.com/questions/2813970

سؤال

  • لقد تم منحنا مشروعًا صغيرًا (كجزء من دورة نظام التشغيل) لإنشاء برنامج Windows يعدل إدخال لوحة المفاتيح ، بحيث يحول أي حرف صغير يتم إدخاله في إحدى الأحرف الكبيرة (دون استخدام Caps-Lock)! لذلك عندما تكتب على لوحة المفاتيح ، سترى ما تكتبه يتحول إلى أحرف كبيرة!

    • لقد فعلت ذلك بسهولة تامة باستخدام Turbo C عن طريق الاتصال GenInterrupt () واستخدام المتغيرات _ah ، _al ، اضطررت إلى قراءة حرف باستخدام:

      _ah = 0x07 ؛ // قراءة حرف بدون صدى GenInterrupt (0x21) ؛ // مقاطعة دوس

    • ثم لتحويله إلى خطاب upercase ، يجب علي إخفاء البت الخامس باستخدام:

      _al = _al & 0xdf ؛ // إخفاء الشخصية التي تم إدخالها مع 11011111

    • وبعد ذلك سأعرض الحرف باستخدام أي روتين إخراج.

الآن ، سيعمل هذا الحل فقط تحت المترجمين القدامى C DOS. ولكن ما نعتزم القيام به هو تحديد حل وثيق أو ما شابه ذلك باستخدام أي برنامج التحويل البرمجي C/C ++ الحديث ضمن نظام التشغيل Windows XP! ما فكرت به لأول مرة هو تعديل لوحة المفاتيح ISR بحيث تقوم بإعداد الجزء الخامس من أي حرف تم إدخاله لتحويلها إلى أقصى درجة! لكني لا أعرف كيف بالضبط للقيام بذلك. ثانياً ، أردت إنشاء برنامج وحدة تحكم Win32 إما للقيام بنفس الحل (ولكن إلى دون جدوى) أو قم بعمل حل متوافق مع Windows ، ما زلت لا أعرف الوظائف التي يجب استخدامها! ثالثًا ، فكرت في صنع برنامج Windows يعدل ISR مباشرة لتناسب احتياجاتي! وما زلت أبحث عن كيفية القيام بذلك!

لذا من فضلك ، إذا تمكنت من مساعدتي في هذا الأمر ، فسأقدر ذلك كثيرًا!

شكرا لكم مقدما !

(أنا أستخدم Windows XP على Intel X86 مع برنامج التحويل البرمجي Mingw-GCC.)

هل كانت مفيدة؟

المحلول

لا يمكنك الوصول إلى لوحة المفاتيح ISR إلا إذا كنت تكتب برنامج تشغيل جهاز Ring 0. أنت أفضل حالًا من التحقيق في واجهات برمجة تطبيقات Windows Hook. هذه تنجز نفس الشيء.

أبدأ هنا: http://msdn.microsoft.com/en-us/library/ms64490٪28v=vs.85٪29.aspx

نصائح أخرى

متى تخطط للتخرج؟ نأمل أن يكون لديك وقت ، لا يعمل Windows بهذه الطريقة بعد الآن. ستحتاج إلى كتابة برنامج تشغيل مرشح لوحة المفاتيح باستخدام WDK. إنه يأتي مع تنفيذ عينة في دليل SRC Input KBFILTR. لا يمكنك استخدام الأدوات التي تعرفها ، ويتضمن WDK برنامجًا برمجيًا وتصحيح أخطاء kernel. متاح دون أي تكلفة ، اذهب الى هنا للبدء.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top