Программно включать / отключить вход MultyTouch Pinger?
-
20-09-2019 - |
Вопрос
У меня есть планшетный ПК с поддержкой с поддержкой мультитох, работающий с Windows 7.
Однако, используя стилус-ручку и уходя слишком далеко от дисплея, я часто случайно ударил его пальцами, что вызывает нежелательные клики мыши.
Решение является перемещением на «Панель управления - входной и входной вход ручки и пальца» и деактивирует флажок «Используйте пальцем в качестве устройства ввода» (все заголовки переведены, чтобы они могли отличаться в английских окнах).
Теперь мне интересно, смогу ли я это сделать программно, поэтому я смогу написать небольшое приложение для этого.
Я пытался использовать монитор процесса для поиска ключей реестра, однако я не нашел ни одного, который действительно показывает тот же эффект, что и флажок.
Кто-нибудь знает, как получить доступ к этому свойству (без использования UI-Automation)?
Решение
Это можно сделать, манипулируя 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 )