11

Windows 8 (できれば Windows 7) でタッチ イベントをシミュレートする方法はありますか。
Multi touch vista と呼ばれるプロジェクトがあることは知っていますが、少しやり過ぎだと感じており、複数の画面で正しく動作することはありませんでした。
私がやりたいことは非常に単純です。複数のマウスなどを必要とせずに、タッチ イベントを Windows に送信できるアプリを開始したいと考えています。
それは可能ですか、それとも (MMV) ドライバーが必要ですか?

ありがとう
/ジミー

4

4 に答える 4

5

似たようなものを探していたところ、タッチ インジェクション APIとサンプル コード(C++を使用した Windows 開発者プレビューでのタッチ入力のシミュレート) の記事があなたの質問に答えるかもしれません。ただし、これは Windows 8 でのみ機能するようです (Windows 7 では機能しません)。

タップ、ホールド、ドラッグ、ピンチ/パン、回転、クロススライドをシミュレートします。

タッチ (タップ) コードは次のとおりです。

POINTER_TOUCH_INFO contact;
InitializeTouchInjection(1, TOUCH_FEEDBACK_DEFAULT); // Here number of contact point is declared as 1.
memset(&contact, 0, sizeof(POINTER_TOUCH_INFO)); 

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

contact.touchFlags = TOUCH_FLAG_NONE;
contact.touchMask = TOUCH_MASK_CONTACTAREA | TOUCH_MASK_ORIENTATION | TOUCH_MASK_PRESSURE;
contact.orientation = 90; // Orientation of 90 means touching perpendicular to screen.
contact.pressure = 32000; 

// defining contact area (I have taken area of 4 x 4 pixel)
contact.rcContact.top = contact.pointerInfo.ptPixelLocation.y - 2;
contact.rcContact.bottom = contact.pointerInfo.ptPixelLocation.y + 2;
contact.rcContact.left = contact.pointerInfo.ptPixelLocation.x  - 2;
contact.rcContact.right = contact.pointerInfo.ptPixelLocation.x  + 2;


contact.pointerInfo.pointerFlags = POINTER_FLAG_DOWN | POINTER_FLAG_INRANGE | POINTER_FLAG_INCONTACT;
InjectTouchInput(1, &contact); // Injecting the touch down on screen

contact.pointerInfo.pointerFlags = POINTER_FLAG_UP;
InjectTouchInput(1, &contact); // Injecting the touch Up from screen

別の記事: Windows タッチ ジェスチャの概要

于 2012-04-10T02:32:16.877 に答える
4

自分で試す機会はありませんでしたが、この記事によると、Windows 8 Dev Preview に含まれているシミュレーターでは、マウスを使用してマルチタッチのズームと回転のジェスチャをシミュレートできます。

この BUILD カンファレンス セッションの約 35:40 で、このデモを見ることができます: Tools for building Metro style apps

于 2011-09-21T22:50:41.063 に答える
4

Windows 8 の User32.dll にパッケージ化されている InjectTouchInput の C++ サンプル コードを指すソリューションに加えて、C# ソリューションは次の場所にあります。

InjectTouchInput Windows 8 C# が機能しない (false を返す)

于 2012-04-15T23:11:06.447 に答える
0

仮想 Hid ドライバーを作成することが唯一の方法のようです。

于 2012-02-27T15:36:00.307 に答える