2010-02-21 37 views
3

我试图自动化一个Web进程,我需要重复点击一个按钮。当我的代码“点击”该按钮(从我的窗体上的WebBrowser控件获得的HtmlElement)时,它将焦点带回到我的应用程序,更具体地说是WebBrowser控件。我希望更好地自动执行此过程,以便用户可以在过程正在进行时做其他事情,但如果窗口正在取得最佳效果,就不会发生这种情况。WinForms Web浏览器控件强制重新聚焦?

与点击相关的代码是:

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

我也试过button.RaiseEvent(“点击”)和我得到同样的结果,重点问题和所有。

我也尝试隐藏窗体,但是当调用InvokeMember/RaiseEvent方法时,无论我在做什么都会失去焦点,但由于窗体不可见,所以焦点似乎无处可去。

关于webbrowser的唯一非默认的事情是它的URI被设置为我的页面,并且ScriptErrorsSuppressed设置为True。

+0

的C#编程语言不具有WebBrowser控件。 – 2010-02-21 22:41:27

+0

哈哈,你很有趣: System.Windows.Forms.WebBrowser – 2010-02-25 16:48:08

+0

这没有在C#语言规范中定义。严格来说这个问题也与英语有关,但你也不应该用英语来标记问题。 C#或英语无法帮助您解决非语言问题。 – 2010-03-08 21:35:43

回答

1

为什么你需要点击这个按钮?它发送一些表单? 如果是,您可以使用WebClient并模拟不带图形界面的发送表单。

基本上几乎任何重要的需要连接到网站使用GetPostmultipart/post因此WebClient将是完美的。你可以简单地得到这个按钮上的网站,并解析它以获得点击它的功能。然后模拟你自己的行为。

1

在IE7或更高版本,你可以在web浏览器的网站实现IProtectFocus并拒绝对焦变化。如果您使用支持这种自定义的原始ActiveX或其包装器,则会更好。 csexwb。如果您必须使用winform webbrowser控件,则需要create your own webbrowser site

+0

我没有使用iexplorer.exe或任何“真实”的浏览器。我使用.Net Framework 4.0 beta版的System.Windows.Forms.WebBrowser控件。 – 2010-03-02 15:45:08

+0

我不是跟其他浏览器交谈。 webbrowser网站是System.Windows.Forms.WebBrowser中的嵌套类。 – 2010-03-02 16:38:24