やっと本題の InjectTouchInput に入ります。
MSDNのInjectTouchInputを訳してみます。こちらも間違いがあれば指摘していただけると助かります。
- InjectTouchInput function (Windows)
- POINTER_TOUCH_INFO structure (Windows)
- POINTER_INFO structure (Windows)
なお、この関数もWindows 8 および Windows Server 2012 のデスクトップのみのサポートになっています。
InjectTouchInput 関数
BOOL InjectTouchInput(UINT32 count,
const POINTER_TOUCH_INFO *contacts
);
count
次の引数contactsの数。最大数はInitializeTouchInjection 関数で設定したmaxCount の数。
contacts
POINTER_TOUCH_INFO 構造体の配列へのポインタ。認識させるタッチポイントの数だけ作成する
POINTER_TOUCH_INFO 構造体
typedef struct tagPOINTER_TOUCH_INFO {POINTER_INFO pointerInfo;
Touch Flags touchFlags;
Touch Mask touchMask;
RECT rcContact;
RECT rcContactRaw;
UINT32 orientation;
UINT32 pressure;
} POINTER_TOUCH_INFO;
- pointerInfo
- タッチの情報が入った POINTER_INFO 構造体。
- touchFlags
- 未使用。
- touchMask
- TOUCH_MASK_NONEまたは、TOUCH_MASK_CONTACTAREA、TOUCH_MASK_ORIENTATION、TOUCH_MASK_PRESSUREを OR して設定する。それぞれのメンバ変数を有効にする。
- rcContact
- rcContactRaw
- まだ、よくわからないのですが、タッチされた時の範囲のようです(おそらくタッチは1ピクセルにはならないので)。
- orientation
- ポインタの回転角度。 0 から 359 の範囲で設定する。0が設定された場合は、回転をレポートしない。
- pressure
- 筆圧。 0 から 1024 の範囲で設定する。 0 が設定された場合は、筆圧をレポートしない。
POINTER_INFO 構造体
typedef struct tagPOINTER_INFO {POINTER_INPUT_TYPE pointerType;
UINT32 pointerId;
UINT32 frameId;
POINTER_FLAGS pointerFlags;
HANDLE sourceDevice;
HWND hwndTarget;
POINT ptPixelLocation;
POINT ptHimetricLocation;
POINT ptPixelLocationRaw;
POINT ptHimetricLocationRaw;
DWORD dwTime;
UINT32 historyCount;
INT32 inputData;
DWORD dwKeyStates;
UINT64 PerformanceCount;
POINTER_BUTTON_CHANGE_TYPE ButtonChangeType;
} POINTER_INFO;
- pointerType
- POINTER_INPUT_TYPE 列挙体で定義されている、ポインタ種別。ポインタ、ペン、タッチ、マウスがある。
- pointerId
- 複数のポインタを扱う場合のポインタ識別子。
- frameId
- 一回の更新で複数の情報を取得するようなデバイスの場合の、フレーム番号
- pointerFlags
- シミュレートする入力の種類。Pointer Flagsを参照。いつ、どのように入力させるかは下図を参照。
- sourceDevice
- 入力元デバイスのハンドル。
- hwndTarget
- ターゲットウィンドウのウィンドウハンドル。
- ptPixelLocation
- ポイントの座標(ピクセル単位)。PT_TOUCH のみ適用され、そのほかはptPixelLocationRawと同じになります。
- ptHimetricLocation
- HIMETRIC(0.01mm)単位でのスクリーン座標。PT_TOUCH のみ適用され、そのほかはptPixelLocationRawと同じになります。
- ptPixelLocationRaw
- ポイントのスクリーン座標(ピクセル単位)。
- ptHimetricLocationRaw
- HIMETRIC(0.01mm)単位でのスクリーン座標。
- dwTime
- タイムスタンプ。
- historyCount
- この回で合成された入力の数?
- inputData
- pointerFlags に POINTER_FLAG_WHEEL を指定した場合、正の値はホイールを前方に回転したことを示し、負の値はホイールが逆回転したことを示します。
pointerFlags に POINTER_FLAG_HWHEEL を指定した場合、正の値はホイールが右に回転したことを示し、負の値はホイールが左に回転したことを示します。
- dwKeyStates
- 0または次の値で、ShiftまたはCtrlキーの押下状態を通知します。
- POINTER_MOD_SHIFT Shiftキーが押された。
- POINTER_MOD_CTRL Ctrlキーが押された。
- PerformanceCount
- パフォーマンスカウンタの値。
- ButtonChangeType
- (おそらく)マウスボタンの押下状態。