質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

タッチパネル

タッチパネルとは、画面に指やペンで直接触れてコンピューターを操作する電子機器のことです。表示装置と入力装置の2つの機能を組み合わせたデバイスです。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

Q&A

解決済

2回答

5751閲覧

Windows でマルチタッチ時のフィードバックを無効化する方法

IYEMON018

総合スコア202

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

Windows

Windowsは、マイクロソフト社が開発したオペレーティングシステムです。当初は、MS-DOSに変わるOSとして開発されました。 GUIを採用し、主にインテル系のCPUを搭載したコンピューターで動作します。Windows系OSのシェアは、90%を超えるといわれています。 パソコン用以外に、POSシステムやスマートフォンなどの携帯端末用、サーバ用のOSもあります。

Win32 API

Win32 APIはMicrosoft Windowsの32bitプロセッサのOSで動作するAPIです。

タッチパネル

タッチパネルとは、画面に指やペンで直接触れてコンピューターを操作する電子機器のことです。表示装置と入力装置の2つの機能を組み合わせたデバイスです。

WPF

Windows Presentation Foundation (WPF) は、魅力的な外観のユーザー エクスペリエンスを持つ Windows クライアント アプリケーションを作成するための次世代プレゼンテーション システムです

0グッド

0クリップ

投稿2017/06/12 02:58

編集2017/06/12 05:01

###前提・実現したいこと
【動作環境】

  • OS : Windows10
  • 言語 : C#
  • GUIアーキテクチャ : WPF

【実現したいこと】
Windows10 タブレットでWPF アプリケーションを作成しています。
タブレットなのでマルチタッチ操作ができるのですが、マルチタッチ操作で同時にタップした場合にタッチフィードバック(以下画像参照)が表示されてしまいます。
(2点タッチでは発生しにくいのですが、5点同時などタッチ数が多くなるほど発生率が高くなります。)
このタッチフィードバックを無効化する方法を探しています。
方法は、レジストリの変更、Win32 API を使用するなど、「C# + WPF」で実現できればなんでもOKです。

タッチフィードバック イメージ

###分かっていること
この現象が発生するのはWPFアプリケーションのみのようです。
UWP、WPF、Windows Forms の3種類でアプリケーションを新規作成して試したところ、当現象が発生したのがWPFアプリケーションのみでした。

###試したこと
以下のページの方法でタッチフィードバックを無効化できるとありましたが、これはUWP向けのAPIのためWPFでは利用できませんでした。
https://stackoverflow.com/questions/15760450/disable-touch-feedback-by-code-in-windows-8-store-apps
https://docs.microsoft.com/ja-jp/windows/uwp/input-and-devices/guidelines-for-visualfeedback

以下のページで上記案のWin32 API 版のコードサンプルがありましたが、こちらも期待した結果にはなりませんでした。
https://stackoverflow.com/questions/27550373/disable-touch-visual-feedback-on-windows-8-1-programmatically-desktop-app

他にレジストリで実現できないかと考え、以下のページに辿り着きましたがこちらも期待した結果にはなりませんでした。
http://getadmx.com/?Category=Windows_10_2016&Policy=Microsoft.Policies.TabletPCShell::TurnOffFeedback_2&Language=ja-jp

こちらの方法は、シングルタッチのフィードバックは無効化できますが、マルチタッチのフィードバックを無効化することはできません。
http://iyemon018.hatenablog.com/entry/2017/05/25/231621

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

自己解決

自己解決しましたので解決方法を記述しておきます。

まず、タッチ操作を以下のページの方法で実現していました。
結論から言うとこのページのサンプルをベースに私が実装した内容が間違っていたことが原因でした。
https://social.technet.microsoft.com/wiki/contents/articles/6460.simulating-touch-input-in-windows-8-using-touch-injection-api.aspx

当該箇所は以下の通り。
この部分の、

3] Define the contact Point, this definition contains contact type, contact location ,contact area, pressure and orientation .

contact.pointerInfo.pointerType = PT_TOUCH;
contact.pointerInfo.pointerId = 0; //contact 0
contact.pointerInfo.ptPixelLocation.y = 200; // Y co-ordinate of touch on screen
contact.pointerInfo.ptPixelLocation.x = 300; // X co-ordinate of touch on screen

ここが、"0" ではなくタッチしたIDを設定していたため発生していました。

contact.pointerInfo.pointerId = 0; //contact 0

サンプル通りにこの値を"0" にするとこの現象は発生しなくなりました。
ただ、なぜこの値は"0"でなければならないのか腑に落ちません。
以下のページではpointerId は、"ポインタの存続期間中にポインタを一意に識別する識別子。 ポインタは、最初に検出されたときに存在し、検出範囲外になったときに存在し終わる。 物理的な実体(指またはペン)が検出範囲外に出て再び検出されるように戻ると、新しいポインタとして扱われ、新しいポインタ識別子が割り当てられることに注意してください。"と説明されています。
https://msdn.microsoft.com/ja-jp/library/windows/desktop/hh454907(v=vs.85).aspx

この説明が正しければ、ポインタを識別する一意な値を設定しなければならないはずなのですがそのような動作ではありませんでした。
もう少し納得のいく回答が得られましたら、こちらに追記します。

投稿2017/06/12 10:58

IYEMON018

総合スコア202

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

投稿2017/06/12 03:15

daive

総合スコア2028

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

IYEMON018

2017/06/12 04:24

代理検索いただきありがとうございます。 すみません、以下のページは私のブログで実際に試したのですが、今回の現象の解決には至りませんでした。 > 開発備忘録:Windows10 + WPF でタッチ フィードバックを無効化する(※) > http://iyemon018.hatenablog.com/entry/2017/05/25/231621 また、検索結果の以下のページにある方法も試しましたが、実現できませんでした。 https://docs.microsoft.com/ja-jp/windows/uwp/input-and-devices/guidelines-for-visualfeedback これらの内容は質問内容に記載しておきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問