微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用PostMessage将文本发送到非活动窗口不能发送移位

好的,所以我创build了一个非常简单的SendText函数

void SendText(string str) { for (std::string::iterator it = str.begin(); it != str.end(); ++it) { PostMessage(h,WM_KEYDOWN,VkKeyScan(*it),0); } return; }

问题很明显,但解决方法不是。 如果发送string

你好,世界!

输出文字是“hello world1”…

什么是USB HID col参数

什么是连接到MS sql 2000/2005的正确的PHPconfiguration?

使PHP + MysqL应用程序成为Windows软件?

rc.exe不再在VS 2015命令提示符中find

停止完成后退出程序

然而,这个应用程序处理我的消息的方式,我不能简单地检查是否需要保持移位并发送VK_SHIFT消息。 基本上,应用程序不处理KEYDOWN和KEYUP消息,它只是将它们视为按键事件。

所以变成按下/释放按键/按下/释放按下/按下按下/释放。

目标:

以某种方式使用单个postmessage发送正确的转移或未转移的字符到应用程序。 或者也许可能是其他的想法,为什么keydown /键盘只是翻译为keypressed。 它必须能够在后台处理(阿拉不发送input)

在Windows上运行Heroku本地开发(PHP buildpack)

使用Java的卷影复制

如何在不丢失原始调用堆栈的情况下重新抛出exception?

deflate不工作在Windows 64 Apache – 加载mod_deflate,mod_filter,mod_header

应用程序exception问题

正如评论中提到的,你的项目可能不是Unicode。

把它从我的一个项目中取出,发送密钥现在应该可以工作。

永久链接

请注意,我遇到了发送字符串的问题 – 整个文本消息 – 因为窗口可能无法(能够)处理它们的速度与发送它们一样快。 键之间的小延迟可以解决这个问题。 在我的项目中,我有一个发送文本的线程,使用一个std ::队列 (互斥体…)来处理所有的文本。 因此,如果你有一个这样的线程,一个短暂的Sleep呼吁不会太错误

你可以尝试不同的延迟,也总是取决于你的电脑。 较旧的操作系统或较旧的计算机可能较慢并且需要较高的延迟。 您可以添加检查的操作系统/规格,或用户定义文字的字符之间的延迟选项。

如果任何人有一个直接的解决方案发送转移到背景窗口,随时留下评论,我会编辑我的答案。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐