【发布时间】:2012-01-12 23:45:40
【问题描述】:
我目前正在尝试发送一个角色。因此,我使用位于 user32.dll 中的本机方法 GetKeyboardLayout 和 VkKeyScanExW 从系统获取当前键盘布局的虚拟键代码(以及转换和控制状态)。之后,我使用 user32.dll 中的本机方法 SendInput 将此虚拟键码发送到应用程序。
一切正常 - 除了欧元符号。当我将此字符作为参数传递给 VkKeyScanExW 时,它返回 -1,表示未找到。在我的键盘上,它位于使用 Ctrl+Menu+E(德语布局)
现在我假设发生这种情况是因为欧元符号是 unicode 符号并且未映射到 ascii 布局中。我读过 Sendinput 还允许使用硬件扫描码的 unicode 模式。所以我希望使用 SendInput 的 unicode 模式可以解决我的问题。但我想我的 virtualkey 代码不是硬件扫描代码,因为 unicode 范围更广。我在哪里可以找到如何通过 SendInput 将 unicode 字符(例如 €)发送到另一个控件/窗口的示例。 MSDN 和 pinvoke.net 没有提供有用的示例。
【问题讨论】:
-
您是否考虑过直接向目标应用程序发送
WM_CHAR,绕过键盘布局问题?