C++ SendInput:结合Unicode和VirtualKey

C++ SendInput:结合Unicode和VirtualKey,c++,winapi,C++,Winapi,我需要在本地计算机上重播远程字符。似乎我只能使用SendInput发送Unicode字符或VirtualKey。。。但我两者都需要。我不知道应用程序需要哪一个。游戏需要虚拟代码,但有时需要unicode(用于聊天)等 那么,我如何重放键输入,使最终结果仍然是我从远程端获得的unicode字符,但同时也为需要它的应用程序传输虚拟代码呢 我在想: SendInput(virtualKey, DOWN) SendInput(unicode, DOWN) SendInput(unicode, UP) S

我需要在本地计算机上重播远程字符。似乎我只能使用SendInput发送Unicode字符或VirtualKey。。。但我两者都需要。我不知道应用程序需要哪一个。游戏需要虚拟代码,但有时需要unicode(用于聊天)等

那么,我如何重放键输入,使最终结果仍然是我从远程端获得的unicode字符,但同时也为需要它的应用程序传输虚拟代码呢

我在想:

SendInput(virtualKey, DOWN)
SendInput(unicode, DOWN)
SendInput(unicode, UP)
SendInput(virtualKey, UP)

但是我尝试了各种组合,结果总是出现重复的字符。

您会得到重复的字符,因为消息循环中的
TranslateMessage()
函数负责将标准
WM\u键关闭
消息(由虚拟键代码的
SendInput()
生成)进入
WM_CHAR
消息(这是像编辑控件这样的东西用来获取实际字符的)。你能提供一个你想要发送的序列的例子吗?实际上,大多数“标准”字符在没有unicode的情况下都可以工作。到目前为止,我发现的唯一问题是“Caps Lock”,它根本不作为按键传输,因此我在没有接收到移位的情况下使用大写字母,因此我模拟了错误的字符atm。这仍然可以很容易地解决,但我敢打赌,如果我跳过这个unicode转发,在野外会有更微妙的问题。为什么不使用自动化呢