使用WM_CHAR消息发出键盘输入
Emitting keyboard input using WM_CHAR message?
我正在为Windows开发虚拟键盘。我知道我可以通过使用(例如)带有正确虚拟键代码的keybd_event()
来发出键盘事件,但这种方法完全不切实际,并且不允许我输出(例如)中文或俄语字符,或者至少不容易。
是否可以在 Windows 上通过发布WM_CHAR消息来模拟键盘事件?如果我能做到这一点,那就太完美了,因为我只需要从 UTF-8 或 UTF-16 编码的配置文件中检索字符代码,然后发布一条消息。
如果可能,我如何在Windows CE和Windows Mobile上做到这一点?我需要同时支持桌面和移动设备。
感谢您的帮助! :)
代码演示如何模拟 unicode 的键盘。小心:
- 您必须激活目标应用程序,因为键盘事件排队到活动应用程序...
- 目标应用程序必须可识别 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++
- 将鼠标和键盘输入发送到 unity3d 游戏 (Rust)
- C ++异步键盘输入(标准方式)
- 盖奇不读取键盘输入
- 在 Linux 上C++:在作为 systemd 服务运行时侦听键盘输入
- 是否可以将键盘输入绑定到 Win32 中的单个应用程序?
- 使用 Windows API c++ 的键盘输入
- 如何检查从键盘输入的特定整数值是否存在于C++文件中的一行或多行中
- 为什么如果我从键盘输入EOF克里昂不要在运行窗口打印程序的输出?
- 从特定 USB 端口捕获键盘输入
- 使用 sfml 进行 2 个键盘输入
- 如何对并行键盘输入进行编程
- 区分键盘记录器中的密码和其他类型的键盘输入
- OpenGL/GLFW/GLM-键盘输入无反应
- 在 MFC 应用中模拟应用内的键盘输入C++
- 如何在C++中终止具有键盘输入的侦听 TCP 服务器
- 通过键盘输入字符串数组和 int 数组的数组大小
- QString变量在使用QT Creator从键盘输入的双变量后跳过
- 如何在CPP中获取直接键盘输入?(跨平台)
- SDL键盘输入未触发