Fungsi SendInput (winuser.h)

Mensintesis penekanan tombol, gerakan mouse, dan klik tombol.

Sintaks

UINT SendInput(
  [in] UINT    cInputs,
  [in] LPINPUT pInputs,
  [in] int     cbSize
);

Parameter

[in] cInputs

Jenis: UINT

Jumlah struktur dalam array pInputs .

[in] pInputs

Jenis: LPINPUT

Array struktur INPUT . Setiap struktur mewakili peristiwa yang akan dimasukkan ke dalam aliran input keyboard atau mouse.

[in] cbSize

Jenis: int

Ukuran, dalam byte, dari struktur INPUT . Jika cbSize bukan ukuran struktur INPUT , fungsi gagal.

Nilai kembali

Jenis: UINT

Fungsi mengembalikan jumlah peristiwa yang berhasil dimasukkan ke dalam aliran input keyboard atau mouse. Jika fungsi mengembalikan nol, input sudah diblokir oleh utas lain. Untuk mendapatkan informasi kesalahan yang diperluas, hubungi GetLastError.

Fungsi ini gagal ketika diblokir oleh UIPI. Perhatikan bahwa Baik GetLastError maupun nilai pengembalian tidak akan menunjukkan kegagalan disebabkan oleh pemblokiran UIPI.

Keterangan

Fungsi ini tunduk pada UIPI. Aplikasi diizinkan untuk menyuntikkan input hanya ke dalam aplikasi yang berada pada tingkat integritas yang sama atau lebih rendah.

Fungsi SendInput menyisipkan peristiwa dalam struktur INPUT secara serial ke dalam aliran input keyboard atau mouse. Peristiwa ini tidak diselingi dengan peristiwa input keyboard atau mouse lain yang disisipkan baik oleh pengguna (dengan keyboard atau mouse) atau melalui panggilan ke keybd_event, mouse_event, atau panggilan lain ke SendInput.

Fungsi ini tidak mengatur ulang status keyboard saat ini. Tombol apa pun yang sudah ditekan ketika fungsi dipanggil mungkin mengganggu peristiwa yang dihasilkan fungsi ini. Untuk menghindari masalah ini, periksa status keyboard dengan fungsi GetAsyncKeyState dan koreksi seperlunya.

Karena keyboard sentuh menggunakan makro pengganti yang didefinisikan dalam winnls.h untuk mengirim input ke sistem, listener pada kait peristiwa keyboard harus mendekode input yang berasal dari keyboard sentuh. Untuk informasi selengkapnya, lihat Pengganti dan Karakter Tambahan.

Aplikasi aksesibilitas dapat menggunakan SendInput untuk menyuntikkan penekanan tombol yang sesuai dengan kunci pintasan peluncuran aplikasi yang ditangani oleh shell. Fungsionalitas ini tidak dijamin berfungsi untuk jenis aplikasi lain.

Contoh

//**********************************************************************
//
// Sends Win + D to toggle to the desktop
//
//**********************************************************************
void ShowDesktop()
{
    OutputString(L"Sending 'Win-D'\r\n");
    INPUT inputs[4] = {};
    ZeroMemory(inputs, sizeof(inputs));

    inputs[0].type = INPUT_KEYBOARD;
    inputs[0].ki.wVk = VK_LWIN;
   
    inputs[1].type = INPUT_KEYBOARD;
    inputs[1].ki.wVk = 'D';

    inputs[2].type = INPUT_KEYBOARD;
    inputs[2].ki.wVk = 'D';
    inputs[2].ki.dwFlags = KEYEVENTF_KEYUP;

    inputs[3].type = INPUT_KEYBOARD;
    inputs[3].ki.wVk = VK_LWIN;
    inputs[3].ki.dwFlags = KEYEVENTF_KEYUP;

    UINT uSent = SendInput(ARRAYSIZE(inputs), inputs, sizeof(INPUT));
    if (uSent != ARRAYSIZE(inputs))
    {
        OutputString(L"SendInput failed: 0x%x\n", HRESULT_FROM_WIN32(GetLastError()));
    } 
}

Persyaratan

Persyaratan Nilai
Klien minimum yang didukung Windows 2000 Professional [hanya aplikasi desktop]
Server minimum yang didukung Windows 2000 Server [hanya aplikasi desktop]
Target Platform Windows
Header winuser.h (sertakan Windows.h)
Pustaka User32.lib
DLL User32.dll

Lihat juga

Konseptual

GetAsyncKeyState

INPUT

Keyboard Input

Referensi

Pengganti dan Karakter Tambahan

keybd_event

mouse_event