将字符转换为虚拟键代码

Jer*_*emy 3 .net c# winapi keycode

我有一串值,我想在每个角色的窗口中模拟按键事件.

我计划将WM_KEYDOWN,WM_CHARWM_KEYUP事件发送到窗口(因为这是手动按下键时似乎发生的事情).

这些消息需要基于虚拟键代码表在wParam中发送int .我可以遍历字符串并获取每个字符,但是如何获取该字符并将其转换为与虚拟键代码对应的值?Convert.ToInt32()不起作用.

And*_*son 10

VkKeyScanEx有人吗?根据MSDN它:

"将字符转换为相应的虚拟键代码和移位状态."

(您也可以使用VkKeyScan但要注意它已被VkKeyScanEx取代.)


Han*_*ant 5

发送WM_KEYDOWN/UP比较麻烦。应用程序本身已经使用修饰键(Shift、Alt、Ctrl)的状态和键盘布局将 WM_KEYDOWN 消息转换为 WM_CHAR。这两者都是你无法控制的,你会随机得到错误的角色。

只需发送 WM_CHAR 消息,将 wparam 设置为字符代码即可。无需担心 lparam,很少有应用程序使用它。

  • 确实,这个答案可能是最好的方法,除非你试图用每个 keydown/keyup __做其他事情__,否则不需要发送“WM_KEYDOWN”或“WM_KEYUP”消息——没有什么神奇的事情发生。 (2认同)