首頁 >後端開發 >C++ >如何使用 SendInput() 傳送多個字元?

如何使用 SendInput() 傳送多個字元?

Susan Sarandon
Susan Sarandon原創
2024-10-30 02:35:28768瀏覽

How to Send Multiple Characters with SendInput()?

使用SendInput發送多個字元

問題:

如何使用SendInput發送多個字元?

答案:

SendInput() 接受多個 INPUT 結構。每個 INPUT 結構代表一個按鍵事件(按下或釋放)。若要傳送多個字符,請建立 INPUT 結構數組並指定正確的虛擬鍵代碼或 Unicode 代碼點。

發送兩個字元的正確代碼:

<code class="c++">#include <array>

int main() {
    array<INPUT, 4> in;
    
    // KEYEVENTF_UNICODE specifies using Unicode codepoints
    in[0].type = INPUT_KEYBOARD;
    in[0].ki.dwFlags = KEYEVENTF_UNICODE;
    in[0].ki.wScan = 0;
    in[0].ki.time = 0;
    in[0].ki.dwExtraInfo = 0;
    in[0].ki.wVk = VkKeyScanW('S');  // 'S' character

    in[1].type = INPUT_KEYBOARD;
    in[1].ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP;
    in[1].ki.wScan = 0;
    in[1].ki.time = 0;
    in[1].ki.dwExtraInfo = 0;
    in[1].ki.wVk = VkKeyScanW('S');  // 'S' character

    in[2].type = INPUT_KEYBOARD;
    in[2].ki.dwFlags = KEYEVENTF_UNICODE;
    in[2].ki.wScan = 0;
    in[2].ki.time = 0;
    in[2].ki.dwExtraInfo = 0;
    in[2].ki.wVk = VkKeyScanW('T');  // 'T' character

    in[3].type = INPUT_KEYBOARD;
    in[3].ki.dwFlags = KEYEVENTF_UNICODE | KEYEVENTF_KEYUP;
    in[3].ki.wScan = 0;
    in[3].ki.time = 0;
    in[3].ki.dwExtraInfo = 0;
    in[3].ki.wVk = VkKeyScanW('T');  // 'T' character

    SendInput(in.size(), &in[0], sizeof(INPUT));

    return 0;
}</code>

重要提示:

  • 重要提示:
  • 虛擬鍵:使用KEYEVENTF_UNICODE 使用Unicode 代碼點而不是虛擬鍵。
  • UNICODE 代碼點: 需要代理對來傳送基本多語言平面 (BMP) 以外的字元。
INPUT 結構的數量: SendInput() 的第一個參數指定 INPUT 結構的數量。

以上是如何使用 SendInput() 傳送多個字元?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn