代码之家  ›  专栏  ›  技术社区  ›  Corey Ogburn

WinForms Web浏览器控件是否强制重新聚焦?

  •  3
  • Corey Ogburn  · 技术社区  · 14 年前

    我正在尝试自动化一个Web过程,在这个过程中我需要反复单击一个按钮。当我的代码“单击”那个按钮(从窗体上的WebBrowser控件中获得的一个htmlelement)时,它会将焦点带回我的应用程序,更具体地说是WebBrowser控件。我希望更好地自动化这个过程,这样用户可以在过程进行的时候做其他事情,但是如果窗口因为获得焦点而没有最小化自己,就不会发生这种情况。

    与单击关联的代码是:

    HtmlElement button = Recruiter.Document.GetElementById("recruit_link");
    button.InvokeMember("click");
    

    我也试过button.raiseevent(“onclick”),得到了完全相同的结果,包括焦点问题等等。

    我还试图隐藏窗体,但是当调用InvokeMember/RaiseEvent方法时,我正在处理的任何内容都会失去焦点,但由于窗体不可见,因此焦点似乎不在任何地方。

    WebBrowser的唯一非默认功能是它的uri设置为“我的页面”,scriptErrorsSupplressed设置为“真”。

    2 回复  |  直到 13 年前
        1
  •  1
  •   Kaminari    14 年前

    为什么需要单击此按钮?它在发送一些表格? 如果是,您可以使用 WebClient 模拟无图形界面的发送表单。

    基本上,几乎任何重要的东西都需要使用 Get Post multipart/post 所以 网络客户端 会是完美的。你可以简单地得到这个按钮所在的站点,然后分析它来得到点击它所做的事情。然后模拟你自己的动作。

        2
  •  1
  •   Sheng Jiang 蒋晟    14 年前

    在IE7或更高版本中,可以在WebBrowser站点上实现IProtectFocus并拒绝焦点更改。如果您使用支持这种定制的原始ActiveX或其包装器(例如, csexwb . 如果必须使用WinFormWebBrowser控件,则需要 create your own webbrowser site .