1

Windows 8 デスクトップ アプリを作成していますが、ユーザーが (たとえば) 4 本の指で画面をタップするとポップアップするようにしたいと考えています。私はこの質問を見つけました:

マウスのクリックではなく、タップ (タッチ入力) をグローバルに検出する方法は?

答えは3つの解決策を提供します。最初のものは、各 Win8 タブレットで動作するアプリを作成したいので、私には適していません。

2 つ目 (RegisterPointerInputTarget) はうまく機能します (私のアプリは、スタート パネルがアクティブな場合やメトロ アプリが実行されている場合でも、考えられるすべてのタッチ入力をインターセプトします)。もう私の指で)。タッチ入力を元に戻そうとしましたが、まったく運がありませんでした:

if (message >= 0x0241 && message <= 0x024F)
{
    DWORD pointerID = LOWORD (wParam);
    POINTER_TOUCH_INFO pti;

    GetPointerTouchInfo (pointerID, &pti);
    InjectTouchInput (1, &pti);
}

(そして、はい、以前に InitializeTouchInjection (10, 0x3); を呼び出しました)また、私は個人的にこの方法が好きではありません。ドキュメントでは、1 つのウィンドウだけがポインター入力用に登録できると述べているからです。したがって、アプリがそのようなリソースを占有することは望ましくありません。

3 番目の解決策 (フック) はうまく機能しますが、metro アプリまたはスタート パネルからのタッチをインターセプトできません。

Windows 8ですべてのタッチ入力を正しくインターセプトする方法を知っている人はいますか? 私のアプリは署名されるので、uiAccess=true は問題ではありません。ありがとう。

4

0 に答える 0