我编写了一个用户可以注册自定义全局热键的应用程序。当按下这些热键时,它们会将给定的文本发送到活动表单。我正在使用InputSimulator libray来执行此操作。但是,当我试图让这个应用程序写入包含unicode字符的文本时(例如:阿塞拜疆字母表中的“Ə”),它会写“?”代替。我将此字符替换为“\ u0259”以及此Charachter的其他十六进制代码(以及其他类似“Ü”,“Ö”,“Ğ”,“Ş”,“Ç”)。但没有改变。我不能打算其他库支持unicode来完成这个模拟过程。
我正在使用WindowsForms。我希望你能帮助我。谢谢!
答案 0 :(得分:1)
您在表单上使用的字体可能存在问题;确保它是unicode字体(例如Arial Unicode MS)。
答案 1 :(得分:0)
我查看了库的内部,问题的核心应该在函数InputBuilder.AddCharacter
中,其中字符被转换为WM_KEYUP
/ WM_KEYDOWN
个消息;但是,根据SendInput
和KEYBDINPUT
结构的文档,它似乎很好地完成了它的工作。
我的怀疑是,作为wScan
WORD
参数,它不能支持BMP之外的Unicode字符,但这不能解释为什么你的角色(应该肯定躺在里面)没有正确插入。
另一个嫌疑人是,目标应用程序无法正确处理那些“特殊”WM_KEYUP
/ WM_KEYDOWN
(具有wParam VK_PACKET
并在WM_CHAR
翻译用黑魔法);你对每个应用程序都有这个问题吗?
答案 2 :(得分:0)
此处发布了一个解决方案: http://inputsimulator.codeplex.com/discussions/214858
开发者说他“应该很快就会发布”...我正在考虑自己编辑.dll。看起来只有2行变化。如果我知道如何,我会再次发帖。