【问题标题】:Send keys to WPF Browser control将密钥发送到 WPF 浏览器控件
【发布时间】:2010-11-22 16:52:41
【问题描述】:

我能否以编程方式将 [UserID]{TAB}[Password]{CARRIAGE RETURN} 发送到具有用户 ID、密码和登录按钮的网络浏览器控件。我想在我的应用程序中使用我自己的虚拟键盘。这里有什么提示吗?

【问题讨论】:

  • 我的建议是使用平台的辅助功能,而不是自己重新发明轮子。使用 javascript 你应该走得很远......

标签: c# html wpf interop


【解决方案1】:

很抱歉回答迟了,但我刚刚完成了一个类似的项目,作为工作的一部分,我正在将两个项目开源到 Codeplex。

第一个是Windows Input Simulator,它是用 C# 编写的 Win32 SendInput 的简单 .NET 包装器。

第二个是一个非常可定制的屏幕键盘或触摸屏键盘控件和工具包,称为 WpfKB,明天将作为初始版本提供。希望这些对您或遇到这些项目的其他人有所帮助。

【讨论】:

    【解决方案2】:

    我最近不得不通过 WPF 浏览器控件实现自动身份验证,并且我研究了模拟击键。我不需要完整的虚拟键盘,因此通过IHTMLDocument2 与登录页面的 DOM 交互最终是最好的方法,但在做出决定之前我研究了击键自动化并找到了一些选项。

    1. 您可以按照Simulating basic keyboard eventsSimulating text input 中的说明在控件上引发适当的路由事件。我不知道这种方法有任何具体问题,但我选择反对它只是因为我不喜欢在不查看 CLR 如何处理实际输入的情况下模拟输入,并且至少没有提高整个生命周期(PreviewKeyDown、KeyDown、 PreviewKeyUp, KeyUp) 我对意想不到的后果保持警惕。

    2. 查看 CodePlex 上的 WOSK。这是一个很好的例子,说明如何通过Managed Windows API调用Win32的keybd_eventSendInput函数生成低级输入消息来模拟输入。有一些不必要的绒毛(例如透明度)和一些奇怪的 WPF 用法,例如在按钮上使用 CommandParameterClick 事件而不是 Command,但一般方法是理智的,并且相当完整。

    3. 您还可以调用 Jeroen 提到的 Windows 屏幕键盘。我没有尝试这个,因为我不需要虚拟键盘,但如果你无论如何都要调用 Win32,你不妨遵循WOSK 模型并按照你想要的方式构建 UI。

    【讨论】:

      猜你喜欢
      • 2011-02-09
      • 1970-01-01
      • 1970-01-01
      • 2010-11-18
      • 1970-01-01
      • 2010-10-18
      • 1970-01-01
      • 2016-04-09
      • 1970-01-01
      相关资源
      最近更新 更多