تمكين / تعطيل إدخال الإصبع متعدد اللعين برمجيا؟
-
20-09-2019 - |
سؤال
لدي جهاز كمبيوتر لوحي متعدد الذكاء يعمل بنظام Windows 7.
ومع ذلك ، عند استخدام قلم القلم والابتعاد عن الشاشة ، غالبًا ما أصابها عن طريق الخطأ بأصابعي التي تسبب نقرات الماوس غير المرغوب فيها.
يتم التنقل في الحل إلى "لوحة التحكم - إدخال القلم والإصبع - إدخال الإصبع" وإلغاء تنشيط خانة الاختيار "استخدم الإصبع كجهاز إدخال" (جميع العناوين مترجمة حتى تكون مختلفة على النوافذ الإنجليزية).
الآن أتساءل عما إذا كان بإمكاني القيام بذلك برمجياً أيضًا ، لذلك سأكون قادرًا على كتابة تطبيق صينية صغيرة لهذا الغرض.
حاولت استخدام Process Monitor لمعرفة مفاتيح التسجيل ، ومع ذلك ، لم أجد واحدة والتي تظهر حقًا نفس تأثير مربع الاختيار.
هل يعرف أي شخص كيفية الوصول إلى هذه الخاصية (دون استخدام واجهة المستخدم)؟
المحلول
يمكن القيام بذلك عن طريق معالجة MICROSOFT_TABLETPENSERVICE_PROPERTY
مجموعة العلم.
#include <tpcshrd.h>
BOOL InitInstance(HINSTANCE hInstance, int nCmdShow) {
const DWORD_PTR dwHwndTabletProperty =
TABLET_DISABLE_PRESSANDHOLD | // disables press and hold (right-click) gesture
TABLET_DISABLE_PENTAPFEEDBACK | // disables UI feedback on pen up (waves)
TABLET_DISABLE_PENBARRELFEEDBACK | // disables UI feedback on pen button down
TABLET_DISABLE_FLICKS; // disables pen flicks (back, forward, drag down, drag up)
ATOM atom = GlobalAddAtom(MICROSOFT_TABLETPENSERVICE_PROPERTY);
SetProp(hWnd, MICROSOFT_TABLETPENSERVICE_PROPERTY, reinterpret_cast (dwHwndTabletProperty));
GlobalDeleteAtom(atom);
}
(أنا لا آخذ الاعتمادات لهذا ، سوي)
المعلمة المهمة هي مقبض HWND الذي تمريره إلى setProp. getDesktopwindow إرجاع مقبض نافذة سطح المكتب. يجب أن يؤدي تعيين هذا إلى نافذة سطح المكتب إلغاء تنشيطه لجميع النوافذ على سطح المكتب وسطح المكتب نفسه. لاحظ أن هذا لن يكون تغييرًا مستمرًا (إعادة التشغيل سوف تتراجع عنه).
القيم المحتملة التي يمكنك استخدامها
#define TABLET_DISABLE_PRESSANDHOLD 0x00000001
#define TABLET_DISABLE_PENTAPFEEDBACK 0x00000008
#define TABLET_DISABLE_PENBARRELFEEDBACK 0x00000010
#define TABLET_DISABLE_TOUCHUIFORCEON 0x00000100
#define TABLET_DISABLE_TOUCHUIFORCEOFF 0x00000200
#define TABLET_DISABLE_TOUCHSWITCH 0x00008000
#define TABLET_DISABLE_FLICKS 0x00010000
#define TABLET_ENABLE_FLICKSONCONTEXT 0x00020000
#define TABLET_ENABLE_FLICKLEARNINGMODE 0x00040000
#define TABLET_DISABLE_SMOOTHSCROLLING 0x00080000
#define TABLET_DISABLE_FLICKFALLBACKKEYS 0x00100000
#define TABLET_ENABLE_MULTITOUCHDATA 0x01000000
( http://msdn.microsoft.com/en-us/library/bb969148٪28vs.85٪29.aspx )