4


3

プログラムでマルチタッチ指入力を有効/無効にしますか?

Windows 7を実行しているマルチトーチ対応のタブレットPCがあります。

ただし、スタイラスペンを使用してディスプレイから離れすぎると、指で誤ってスタイラスペンを打ってしまい、マウスクリックが不要になります。

ソリューションは、「コントロールパネル-ペンと指の入力-指の入力」に移動し、「指を入力デバイスとして使用する」チェックボックスを無効にします(すべてのタイトルは翻訳されているため、英語のウィンドウでは異なる場合があります)。

今、私もこれをプログラムで行うことができるかどうか疑問に思っているので、このための小さなトレイアプリを書くことができます。

Process Monitorを使用してレジストリキーを見つけようとしましたが、チェックボックスと同じ効果を実際に示すものは見つかりませんでした。

誰もがこのプロパティにアクセスする方法を知っていますか?

1 Answer


4


これは、「MICROSOFT_TABLETPENSERVICE_PROPERTY」フラグセットを操作することで実行できます。

#include

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);
}

(私はこの1つ、http://johnniebooks.blogspot.com/2009/07/disable-flicks-and-mouse-pointer.html [soure]の功績を認めていません)

重要なパラメーターは、SetPropに渡すhWndハンドルです。 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)