diaosi888
diaosi888
采纳率33.3%
2018-12-09 14:08

webbrowser如何在64位环境下调用32位的IE

40

1.C#的程序是64位生成的,因为某些插件需要用64位打包


2.使用pageoffice因为某些原因必须需要用到32位IE浏览器调用本地32位的office(office版本因为项目原因不能更换)


所以现在的问题是,能不能在64位的环境下调用系统32位IE浏览器,可以的话问题解决

  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 复制链接分享
  • 邀请回答

3条回答

  • S2T11Enterprise Johan. 3年前

    正巧我遇到过这样的场景,在业务中需要用到下面的方式来加载 32 位的 IE。下面我描述下我的调用方法,供参考。

    1.首先设置生成 -> 平台 选择 x86
    2.定义出 32 位 WebBrowser 版本路径,这个路径可以在注册表中找到(cmd 中运行 regedit)

    private const string WebBrowser32 = @"SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION";//32位 WebBrowser 版本路径
    private const string WebBrowser64 = @"SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION";//64位 WebBrowser 版本路径
    

    3.通过下面的内置方法去查找注册表中的项,如果存在就设置 WebBrowser 的版本号。

    var registryKey = Registry.LocalMachine.OpenSubKey(WebBrowser32, true);//找到路径,并指定可以修改版本号
    

    4.释放 registryKey

    registryKey.Close();
    

    就这样,我的 WinForm 就能调用到 32 位的 WebBrowser 了。最后附上各版本号的信息以及对应参数:

    
            10001 (0x2711)  Internet Explorer 10。网页以IE 10的标准模式展现,页面!DOCTYPE无效
    
            10000 (0x02710) Internet Explorer 10。在IE 10标准模式中按照网页上!DOCTYPE指令来显示网页。Internet Explorer 10 默认值。
    
            9999 (0x270F)   Windows Internet Explorer 9. 强制IE9显示,忽略!DOCTYPE指令
    
            9000 (0x2328)   Internet Explorer 9. Internet Explorer 9默认值,在IE9标准模式中按照网页上!DOCTYPE指令来显示网页。
    
            8888 (0x22B8)   Internet Explorer 8,强制IE8标准模式显示,忽略!DOCTYPE指令
    
            8000 (0x1F40)   Internet Explorer 8默认设置,在IE8标准模式中按照网页上!DOCTYPE指令展示网页
    
            7000 (0x1B58)   使用WebBrowser Control控件的应用程序所使用的默认值,在IE7标准模式中按照网页上!DOCTYPE指令来展示网页。
    
    点赞 评论 复制链接分享
  • litzany 一把吉他 3年前

    加个中间脚本过渡调用一下吧,简单粗暴

    点赞 评论 复制链接分享
  • caozhy 从今以后生命中的每一秒都属于我爱的人 3年前

    不可以,需要再写一个32bit的程序,和你这个64bit程序采用网络通讯或者管道通讯,让32bit的进程和32bit的IE去交互。

    点赞 评论 复制链接分享

相关推荐