如何模拟表单的unicode文本输入

时间:2011-03-01 17:50:19

标签: c# unicode input simulator

我编写了一个用户可以注册自定义全局热键的应用程序。当按下这些热键时,它们会将给定的文本发送到活动表单。我正在使用InputSimulator libray来执行此操作。但是,当我试图让这个应用程序写入包含unicode字符的文本时(例如:阿塞拜疆字母表中的“Ə”),它会写“?”代替。我将此字符替换为“\ u0259”以及此Charachter的其他十六进制代码(以及其他类似“Ü”,“Ö”,“Ğ”,“Ş”,“Ç”)。但没有改变。我不能打算其他库支持unicode来完成这个模拟过程。

我正在使用WindowsForms。我希望你能帮助我。谢谢!

3 个答案:

答案 0 :(得分:1)

您在表单上使用的字体可能存在问题;确保它是unicode字体(例如Arial Unicode MS)。

答案 1 :(得分:0)

我查看了库的内部,问题的核心应该在函数InputBuilder.AddCharacter中,其中字符被转换为WM_KEYUP / WM_KEYDOWN个消息;但是,根据SendInputKEYBDINPUT结构的文档,它似乎很好地完成了它的工作。

我的怀疑是,作为wScan WORD参数,它不能支持BMP之外的Unicode字符,但这不能解释为什么你的角色(应该肯定躺在里面)没有正确插入。

另一个嫌疑人是,目标应用程序无法正确处理那些“特殊”WM_KEYUP / WM_KEYDOWN(具有wParam VK_PACKET并在WM_CHAR翻译用黑魔法);你对每个应用程序都有这个问题吗?

答案 2 :(得分:0)

此处发布了一个解决方案: http://inputsimulator.codeplex.com/discussions/214858

开发者说他“应该很快就会发布”...我正在考虑自己编辑.dll。看起来只有2行变化。如果我知道如何,我会再次发帖。