InjectTouchInput 函式 (winuser.h)
模擬觸控輸入。
語法
BOOL InjectTouchInput(
[in] UINT32 count,
[in] const POINTER_TOUCH_INFO *contacts
);
參數
[in] count
連絡人中的陣列大小。
Count的最大值是由InitializeTouchInjection函式的maxCount參數所指定。
[in] contacts
表示桌面上所有連絡人 之POINTER_TOUCH_INFO 結構的陣列。 每個連絡人的螢幕座標都必須在桌面的界限內。
傳回值
如果函式成功,則傳回值為非零。
如果此函式失敗,則傳回值為零。 若要取得擴充的錯誤資訊,請呼叫 GetLastError。
備註
插入的輸入會傳送至執行插入程式之會話的桌面。
觸控輸入插入有兩種輸入狀態 (互動式和暫留) ,這些輸入狀態是由連絡人中的下列指標旗標組合所表示:
pointerFlags (POINTER_FLAG_*) | 狀態 |
---|---|
INRANGE |更新 | 觸控暫留會啟動或移動 |
INRANGE |INCONTACT |DOWN | 觸控連絡人向下鍵 |
INRANGE |INCONTACT |更新 | 觸控連絡人移動 |
INRANGE |UP | 觸控連絡人向上並轉換至暫留 |
UPDATE | 觸控暫留結束 |
UP | 觸控結束 |
下圖示范以暫留狀態開頭的觸控插入順序、轉換為互動式,並以暫留結束。
對於按住手勢,必須傳送多個畫面,以確保不會取消輸入。 若為在 x,y) (點按住,請在 x,y (x,y) 傳送WM_POINTERDOWN,後面接著WM_POINTERUPDATE (x,y) 。
接聽 WM_DISPLAYCHANGE 來處理顯示解析度和方向的變更,以及管理螢幕座標更新。 收到 WM_DISPLAYCHANGE 時,所有作用中的連絡人都會取消。
使用 POINTER_FLAG_UP 或 POINTER_FLAG_UPDATE 設定POINTER_FLAG_CANCELED來取消個別連絡人。 取消觸控插入,而不需POINTER_FLAG_UP或POINTER_FLAG_UPDATE使插入失效。
設定POINTER_FLAG_UP時, POINTER_INFO的 ptPixelLocation 應該與先前具有POINTER_FLAG_UPDATE觸控插入框架的值相同。 否則,插入會因為ERROR_INVALID_PARAMETER而失敗,並取消所有作用中的插入連絡人。 系統會在取消插入時修改 WM_POINTERUP 事件的 ptPixelLocation。
輸入時間戳記可以在 POINTER_INFO的 dwTime 或 PerformanceCount 欄位中指定。 值不能比插入執行緒目前的刻度計數或 QueryPerformanceCounter 值還要新。 一旦以時間戳記插入框架之後,所有後續畫面都必須包含時間戳記,直到畫面中的所有連絡人都進入 UP 狀態為止。 必須提供連絡人陣列中第一個專案的自訂時間戳記值。 忽略第一個專案之後的時間戳記值。 自訂時間戳記值必須在每個插入框架中遞增。
指定 PerformanceCount 欄位時,時間戳記會在實際插入時以 .1 毫秒解析度轉換成目前時間。 如果自訂 PerformanceCount 在先前插入時產生相同的 .1 毫秒視窗,API 會傳回錯誤 (ERROR_NOT_READY) ,且不會插入資料。 雖然插入未立即因錯誤而失效,但下一次成功的插入必須有 PerformanceCount 值,且與先前成功插入相隔至少 0.1 毫秒。 同樣地,如果使用欄位,自訂 dwTime 值必須至少為 1 毫秒。
如果在插入參數中同時指定 dwTime 和 PerformanceCount, InjectTouchInput 就會失敗,並出現錯誤碼 (ERROR_INVALID_PARAMETER) 。 一旦插入應用程式以 dwTime 或 PerformanceCount 參數啟動,則必須正確填入時間戳記欄位。 一旦插入序列啟動,插入就無法將自訂時間戳記欄位從一個欄位切換到另一個欄位。
未指定 dwTime 或 PerformanceCount 值時, InjectTouchInput 會根據 API 呼叫的時間配置時間戳記。 如果呼叫相隔不到 0.1 毫秒,API 可能會傳回錯誤 (ERROR_NOT_READY) 。 錯誤不會立即使輸入失效,但插入應用程式必須再次重試相同的畫面,以確保插入成功。
規格需求
最低支援的用戶端 | Windows 8 [僅限傳統型應用程式] |
最低支援的伺服器 | Windows Server 2012 [僅限傳統型應用程式] |
目標平台 | Windows |
標頭 | winuser.h |
程式庫 | User32.lib |
Dll | User32.dll |
API 集合 | ext-ms-win-rtcore-ntuser-wmpointer-l1-1-0 (Windows 10 10.0.14393 版) |