غير قادر على تثبيت السنانير لجميع المواضيع في عملية

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

سؤال

أنا أربط لوحة المفاتيح في التطبيق. الشرط هو ربط لوحة المفاتيح في جميع المواضيع في العملية.

لقد استخدمت setwindowshookex API

SetWindowsHookEx(WH_KEYBOARD_LL, (HOOKPROC)::KeyboardHookProc, hInst, 0);

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

هل هناك أي طريقة لربط العملية بدلاً من المواضيع في العملية.

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

المحلول

هذه الطباعة الجميلة في مستندات SDK لـ LowlevelkeyboardProc أمر بالغ الأهمية:

يتم استدعاء هذا الخطاف في سياق الخيط الذي قام بتثبيته. يتم إجراء المكالمة عن طريق إرسال رسالة إلى مؤشر الترابط الذي قام بتثبيت الخطاف. لذلك ، يجب أن يحتوي الخيط الذي قام بتثبيت الخطاف على حلقة رسالة.

بمعنى آخر ، يجب أن تبقي الخيط حينًا ويجب أن يضخ الخيط حلقة رسالة. السلوك الذي تراه الآن بالكامل حسب التصميم.

نصائح أخرى

حسب MSDN ، wh__keyboard___ll يتم تطبيقه على مستوى العالم وليس التطبيق محدد.

إذا كنت ترغب في تثبيت الخطاف لعملية استخدام مؤشرات ترابط محددة wh___keyboard.

فقط قم بتثبيت الخطاف في الوظيفة الرئيسية. إذا كنت في حاجة إليها فقط عند تشغيل مؤشر ترابط معين ، فيمكنك استخدام علامة متقلبة.

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