gpt4 book ai didi

c++ - 使用 WM_CHAR 消息发出键盘输入?

转载 作者:可可西里 更新时间:2023-11-01 13:14:39 26 4
gpt4 key购买 nike

我正在为 Windows 开发虚拟键盘。我知道我可以通过使用(例如)keybd_event() 和正确的虚拟键代码来发出键盘事件,但这种方法完全不切实际,并且不允许我输出(例如)中文或俄语字符,或者至少不容易。

是否可以在 Windows 上通过发送 WM_CHAR 消息来模拟键盘事件?如果我能做到,那将是完美的,因为我只需从 UTF-8 或 UTF-16 编码的配置文件中检索字符代码,然后发布一条消息。

如果可能,我如何在 Windows CE 和 Windows Mobile 上执行此操作?我需要同时支持桌面和移动设备。

感谢您的帮助! :)

最佳答案

演示如何为 unicode 模拟键盘的代码。当心:

  1. 您必须激活目标应用程序,因为键盘事件已排队到事件应用程序...
  2. 目标应用程序必须支持 unicode
#include <Windows.h>
#include <tchar.h>

static void send_unicode( wchar_t ch ) {
INPUT input;

// init
input.type = INPUT_KEYBOARD;
input.ki.time = 0;
input.ki.dwExtraInfo = 0;
input.ki.wVk = 0;
input.ki.dwFlags = KEYEVENTF_UNICODE;
input.ki.wScan = ch;

// down
SendInput( 1, &input, sizeof( INPUT ) );

// up
input.ki.dwFlags |= KEYEVENTF_KEYUP;
SendInput( 1, &input, sizeof( INPUT ) );
}

int _tmain(int argc, _TCHAR* argv[])
{
_tprintf( TEXT( "you have 5 seconds to switch to an application which accepts unicode input (as Word)...\n" ) );
Sleep( 5000);
_tprintf( TEXT( "Sending...\n" ) );
send_unicode( 946 ); // lowercase greek beta
send_unicode( 269 ); // lowercase c-hachek
send_unicode( 12449 ); // japanese katakana small a
send_unicode( 4595 ); // korean hangul jongseong phieuph-pieup

return 0;

}

关于c++ - 使用 WM_CHAR 消息发出键盘输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18800986/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com