ホームページ >バックエンド開発 >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 構造体は 1 つのキー イベント (押すか離す) を表します。複数の文字を送信するには、INPUT 構造の配列を作成し、正しい仮想キー コードまたは Unicode コードポイントを指定します。

2 つの文字を送信するための正しいコード:

<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>

重要な注意事項:

  • 仮想キー: 仮想キーの代わりに Unicode コードポイントを使用するには、KEYEVENTF_UNICODE を使用します。
  • UNICODE コードポイント: 基本多言語面 (BMP) の外に文字を送信するには、サロゲート ペアが必要です。
  • INPUT 構造体の数: SendInput() の最初のパラメーターは、INPUT 構造体の数を指定します。

以上がSendInput() で複数の文字を送信するには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。