好的,所以我创建了一个非常简单的SendText函数
time.nist.gov
问题非常明显,但解决方法却不是。如果发送字符串
Hello World!
输出的文字是" hello world1" ...
但是,此应用处理我的消息的方式,我无法简单地检查是否需要保留转移并发送VK_SHIFT消息。基本上,该应用程序不处理KEYDOWN和KEYUP消息,它只是将它们视为按键事件。
所以它变成了Shift Pressed / Released ..... Key Pressed / Released ... Shift Pressed / Released。
目标:
以某种方式使用单个postmessage将正确的移位或未移位角色发送到应用程序。或者可能还有其他想法,为什么keydown / keyups只是被翻译成keypressed。它必须能够在后台处理(ala no send input)
答案 0 :(得分:0)
如评论中所述,您的项目可能不是Unicode。
从我的一个项目中得到这个,发送密钥现在应该可以工作。
请注意,我遇到了发送字符串的问题 - 全文消息 - 因为窗口可能无法(能够)以您发送它们的速度处理它们。密钥之间的小延迟可以解决此问题。在我的项目中,我有一个发送文本的线程,使用std::queue(使用互斥...)来处理所有文本。因此,如果你有一个线程,那么对Sleep
的短暂调用就不会太错误。
您可以尝试不同的延迟,也总是取决于您的计算机。较旧的操作系统或较旧的计算机可能较慢并且需要较高的延迟。您可以添加对OS /规范的检查,也可以选择用户定义文本字符之间的延迟。
如果有人有直接解决方案将 Shift 发送到后台窗口,请随时留言,我会编辑我的答案。