Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Mensimulasikan input sentuh.
Sintaks
BOOL InjectTouchInput(
[in] UINT32 count,
[in] const POINTER_TOUCH_INFO *contacts
);
Parameter
[in] count
Ukuran array dalam kontak.
Nilai maksimum untuk hitungan ditentukan oleh parameter maxCount dari fungsi InitializeTouchInjection .
[in] contacts
Array struktur POINTER_TOUCH_INFO yang mewakili semua kontak di desktop. Koordinat layar setiap kontak harus berada dalam batas desktop.
Menampilkan nilai
Jika fungsi berhasil, nilai yang dikembalikan bukan nol.
Jika fungsi gagal, nilai yang dikembalikan adalah nol. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.
Keterangan
Input yang disuntikkan dikirim ke desktop sesi tempat proses injeksi berjalan.
Ada dua status input untuk injeksi input sentuh (interaktif dan hover) yang ditunjukkan oleh kombinasi pointerFlags berikut dalam kontak:
| pointerFlags (POINTER_FLAG_*) | Status |
|---|---|
| INRANGE | UPDATE | Touch hover dimulai atau bergerak |
| INRANGE | INCONTACT | TURUN | Sentuh kontak ke bawah |
| INRANGE | INCONTACT | UPDATE | Sentuh gerakan kontak |
| INRANGE | NAIK | Sentuh kontak ke atas dan transisi ke hover |
| UPDATE | Ujung hover sentuh |
| UP | Sentuhan berakhir |
Diagram berikut menunjukkan urutan injeksi sentuh yang dimulai dengan status mengarahkan kursor, transisi ke interaktif, dan disimpulkan dengan hover.
Untuk gerakan tekan dan tahan, beberapa bingkai harus dikirim untuk memastikan input tidak dibatalkan. Untuk tekan dan tahan pada titik (x,y), kirim WM_POINTERDOWN pada titik (x,y) diikuti dengan pesan WM_POINTERUPDATE pada titik(x,y).
Dengarkan WM_DISPLAYCHANGE untuk menangani perubahan pada resolusi tampilan dan orientasi dan mengelola pembaruan koordinat layar. Semua kontak aktif dibatalkan ketika WM_DISPLAYCHANGE diterima.
Batalkan kontak individual dengan mengatur POINTER_FLAG_CANCELED dengan POINTER_FLAG_UP atau POINTER_FLAG_UPDATE. Membatalkan injeksi sentuh tanpa POINTER_FLAG_UP atau POINTER_FLAG_UPDATE membatalkan injeksi.
Ketika POINTER_FLAG_UP diatur, ptPixelLocation POINTER_INFO harus sama dengan nilai bingkai injeksi sentuh sebelumnya dengan POINTER_FLAG_UPDATE. Jika tidak, injeksi gagal dengan ERROR_INVALID_PARAMETER dan semua kontak injeksi aktif dibatalkan. Sistem memodifikasi ptPixelLocation dari peristiwa WM_POINTERUP karena membatalkan injeksi.
Tanda waktu input dapat ditentukan di bidang dwTime atau PerformanceCount POINTER_INFO. Nilai tidak boleh lebih baru daripada jumlah centang saat ini atau nilai QueryPerformanceCounter dari utas injeksi. Setelah bingkai disuntikkan dengan tanda waktu, semua bingkai berikutnya harus menyertakan tanda waktu sampai semua kontak dalam bingkai masuk ke status UP. Nilai tanda waktu kustom harus disediakan untuk elemen pertama dalam array kontak. Nilai tanda waktu setelah elemen pertama diabaikan. Nilai tanda waktu kustom harus bertahap dalam setiap bingkai injeksi.
Ketika bidang PerformanceCount ditentukan, tanda waktu dikonversi menjadi waktu saat ini dalam resolusi .1 milidetik pada injeksi aktual. Jika PerformanceCount kustom menghasilkan jendela .1 milidetik yang sama dari injeksi sebelumnya, API akan mengembalikan kesalahan (ERROR_NOT_READY) dan tidak akan menyuntikkan data. Meskipun injeksi tidak segera dibatalkan oleh kesalahan, injeksi berhasil berikutnya harus memiliki nilai PerformanceCount yang setidaknya 0,1 milidetik selain dari injeksi yang berhasil sebelumnya. Demikian pula nilai dwTime kustom harus minimal 1 milidetik jika bidang digunakan.
Jika dwTime dan PerformanceCount ditentukan dalam parameter injeksi, InjectTouchInput gagal dengan Kode Kesalahan (ERROR_INVALID_PARAMETER). Setelah aplikasi injeksi dimulai dengan parameter dwTime atau PerformanceCount, bidang tanda waktu harus diisi dengan benar. Injeksi tidak dapat mengalihkan bidang tanda waktu kustom dari satu ke bidang lain setelah urutan injeksi dimulai.
Ketika tidak ada nilai dwTime atau PerformanceCount yang ditentukan, InjectTouchInput mengalokasikan tanda waktu berdasarkan waktu panggilan API. Jika panggilan kurang dari 0,1 milidetik terpisah, API dapat mengembalikan kesalahan (ERROR_NOT_READY). Kesalahan tidak akan segera membatalkan input, tetapi aplikasi injeksi perlu mencoba kembali bingkai yang sama lagi untuk memastikan injeksi berhasil.
Persyaratan
| Klien minimum yang didukung | Windows 8 [hanya aplikasi desktop] |
| Server minimum yang didukung | Windows Server 2012 [hanya aplikasi desktop] |
| Target Platform | Windows |
| Header | winuser.h |
| Pustaka | User32.lib |
| DLL | User32.dll |
| Set API | ext-ms-win-rtcore-ntuser-wmpointer-l1-1-0 (diperkenalkan dalam Windows 10, versi 10.0.14393) |