首页 >后端开发 >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