C#控件webBrowser使用心得

      webBrowser是C#中的一个控件,在C#的windows窗体应用程序的”视图–>工具箱–>公共控件”中可以找到,它可以让我们在窗体中导航网页。我尝试这个控件的初衷是为了让它去调用淘宝基于KISSY库的js文件,虽然此目的以失败告终,但我对该控件的使用有了略微深一点的认知,记录下来备用。

      下面根据我尝试的步骤来说明我使用该控件的心得。

      1.尝试用webBrowser实现自动登录淘宝

      首先奉上代码:

    上述代码执行完成后,有时能成功登录,有时不能。不能成功时界面如下图所示,此时若点击”使用其他帐号登录”可以成功跳转至“我的淘宝”界面,因此代码中有一个点击“使用其他帐号登录”的临时对策。据说这种现象与webBrowser1_DocumentCompleted该函数的调用有关,此处我还没有深入研究。

    2.在webBrowser中显示的淘宝界面不能正常操作

    在登录到淘宝界面后,webBrowser的表现离真正的浏览器还是有相当大的差距,主要表现为两点:

    2.1 在淘宝界面下,只有菜单可以正常点击并正常跳转至相关页面,其他图片链接或文字链接点击后无反应,基本上可以认为凡是需要调用js文件的链接点击均无效,且多次点击后会导致界面报错,如下图所示。   

     2.2 进入淘宝界面后,淘宝会提示浏览器版本过低

     3.升级webBrowser调用的IE浏览器

     第二步中的异常状况也会导致点击领取淘金币的链接无反应,那么如果这些异常状况是否都因为是浏览器版本过低造成的呢?

     经过多方查阅,我终于在这里找到了相关信息:http://weblog.west-wind.com/posts/2011/May/21/Web-Browser-Control-Specifying-the-IE-Version。该文章表示webbrowser默认调用IE7,可以通过修改注册表让webbrowser调用IE9,或者当前电脑中安装的IE版本。

  修改注册表的路径如下:


    但请务必注意:注册表中不会有当前应用软件,需要自己手动增加应用程序名称与相应的键值,手动增加键值后,必须在release模式下该注册表会生效,debug模式下无效。

     成功修改了webBrowser调用的IE版本后,登录到淘宝界面后,淘宝不会再提示浏览器版本过低,但是点击其界面中的相关链接仍然无反应。

     4. 设定IE为默认浏览器

     设定IE为默认浏览器的影响可以参考这里。前面3点的验证状况均是基于未曾设置过IE浏览器为默认浏览器,那么设置了IE浏览器为默认浏览器且成功运行本程序一次后,再去点击界面中的链接,该程序会自动开启一个新的IE浏览器进程,而webBrowser界面并不会更新。我若用webBrowser导航至Baidu页面下,点击链接后,状况也一致。

      也许是因为我还有什么细节没有注意到或者还有一些错误的认知,导致我使用webBrowser失败。希望在今后的学习中能弄明白这一点,届时再与各位分享。

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Fork me on GitHub