我使用GeckoFX而不是.NET webControl组件来制作自动化工具,在GeckoFX支持的方法中调用了:SendKeyEvent()。 我希望通过此方法将字符串发送到具有越南消息的浏览器,但输出是加密字符串:
示例字符串:
đâylàtiếngviệt
这是我的代码
byte[] tmp_cmt = Encoding.UTF8.GetBytes(comment);
char[] tmp_rsl = comment.ToCharArray();
txtLog.AppendText("Starting COMMENT....\n");
webBrowser1.Window.DomWindow.Focus();
int a = 0;
while (a < comment.Length)
{
Thread.Sleep(100);
bool sd = webBrowser1.Window.WindowUtils.SendKeyEvent("keypress", 0, tmp_cmt[a], 0, true);
if (!sd) { Utilityx.Log(tmp_cmt[a].ToString() + " - "); a++; }
Application.DoEvents();
}
txtLog.AppendText("Pressing `Enter` key to submit comment...\n");
webBrowser1.Window.WindowUtils.SendKeyEvent("keydown", 13, 0, 0, true);
webBrowser1.Window.WindowUtils.SendKeyEvent("keyup", 13, 0, 0, true);
结果如下:
?是吗? ti?ng vi?t
如何让它发挥作用? 提前谢谢!
答案 0 :(得分:0)
方法的签名是
SendKeyEvent(string aType, int aKeyCode, int aCharCode, int aModifiers, bool aPreventDefault)
我不知道你发送0的keyCode
是否重要,但肯定charCode
不一个byte
的UTF8编码字符串。相反,您应该尝试使用(int)comment[a]
我在这里看到的问题是,对于越南人来说,可能需要按下多个键。如果SendKeyEvent
不知道如何翻译它,那么您可能需要进行一些复杂的密钥仿真。