我可以以编程方式将[UserID] {TAB} [密码] {CARRIAGE RETURN}发送到webbrowser控件,该控件在那里有一个用户ID,密码和登录按钮。我想在我的应用程序中使用自己的虚拟键盘。这里有什么提示吗?
答案 0 :(得分:2)
对于迟到的回答感到抱歉,但我刚刚完成了一个类似的项目,并且作为工作的一部分,我正在向Codeplex开放两个项目。
第一个是Windows Input Simulator,它是用C#编写的Win32 SendInput的简单.NET包装器。
第二个是一个非常可定制的屏幕键盘或触摸屏键盘控制和工具包,名为WpfKB,明天将作为初始版本提供。希望这些对您或遇到这些项目的任何其他人都有帮助。
答案 1 :(得分:1)
我最近不得不通过WPF浏览器控件实现自动身份验证,我研究了模拟键击。我不需要一个完整的虚拟键盘,因此通过IHTMLDocument2
与登录页面的DOM交互最终成为最好的方法,但我在做出决定之前调查了击键自动化并找到了一些选项。
您可以按照Simulating basic keyboard events和Simulating text input中的说明在控件上引发相应的路由事件。我不知道这种方法有什么具体问题,但我选择反对它只是因为我不习惯模拟输入而不看CLR如何处理实际输入,并且至少没有提高整个生命周期(PreviewKeyDown,KeyDown, PreviewKeyUp,KeyUp)我对意想不到的后果持谨慎态度。
在CodePlex上查看WOSK。这是一个很好的示例,说明如何调用Win32 keybd_event
和SendInput
函数以通过Managed Windows API生成低级输入消息来模拟输入。有一些不必要的毛茸茸(例如透明度)和一些奇怪的WPF用法,例如在按钮上使用CommandParameter
而Click
事件而不是Command
,但一般方法是理智的,它已经相当完整。
您还可以调用Jeroen提到的Windows屏幕键盘。我没有尝试这个,因为我不需要虚拟键盘,但如果你打算调用Win32,你也可以按照WOSK模型按照你想要的方式构建UI。