SendInput의 기능을 확장하여 여러 문자 전송
SendInput 기능은 프로그래머의 무기고에 있는 강력한 도구로, 다음과 같은 시뮬레이션을 가능하게 합니다. 키보드 입력. 그러나 용량은 단일 문자 전송에만 국한되지 않습니다. 이 문서에서는 SendInput을 활용하여 여러 문자를 효과적으로 전송하는 방법을 살펴봅니다.
처음에는 다음과 유사한 기술을 사용해 볼 수 있습니다.
INPUT in;
in.type = INPUT_KEYBOARD;
in.ki.wScan = 0;
in.ki.time = 0;
in.ki.dwExtraInfo = 0;
in.ki.wVk = 0x53 0x54;
SendInput(2, &in, sizeof(INPUT));
안타깝게도 이 코드는 의도한 대로 실행되지 않습니다. 그 이유는 전달되는 INPUT 구조체의 수를 지정하는 SendInput의 첫 번째 매개변수에 있습니다. 이 경우 SendInput에 전달된 값 2와 달리 하나의 구조체만 제공됩니다.
더욱이, 단일 INPUT 구조를 사용하여 여러 가상 키를 지정할 수 없습니다. 이 목표를 달성하려면 각 쌍이 keydown 및 keyup 이벤트를 나타내는 INPUT 구조의 배열을 선언해야 합니다. 따라서 앞서 언급한 예에서는 4개의 INPUT 구조가 필요합니다.
또 다른 고려 사항은 KEYEVENTF_UNICODE 플래그와 관련됩니다. 이 플래그를 사용하면 가상 키 대신 실제 유니코드 코드 포인트가 지정됩니다. 각 코드 포인트는 UTF-16 코드 단위에 해당합니다. 즉, 유니코드 코드 포인트에 서로게이트 쌍이 필요한 경우 두 세트의 down/up INPUT 구조가 필요합니다.
결론적으로 올바른 접근 방식에는 다음 배열을 선언하는 것이 포함됩니다. INPUT 구조는 구조의 수가 전송될 문자의 수와 일치하는지 확인합니다. 또한 KEYEVENTF_UNICODE를 사용하는 경우 유니코드 코드 포인트가 올바르게 처리되고 해당 down/up 이벤트가 지정되어야 합니다. 이러한 지침을 준수함으로써 개발자는 SendInput의 잠재력을 최대한 활용하여 여러 문자를 쉽고 효율적으로 전송할 수 있습니다.
부인 성명: 제공된 모든 리소스는 부분적으로 인터넷에서 가져온 것입니다. 귀하의 저작권이나 기타 권리 및 이익이 침해된 경우 자세한 이유를 설명하고 저작권 또는 권리 및 이익에 대한 증거를 제공한 후 이메일([email protected])로 보내주십시오. 최대한 빨리 처리해 드리겠습니다.
Copyright© 2022 湘ICP备2022001581号-3