diaosi888 2018-12-09 14:08 采纳率: 33.3%
浏览 2153
已结题

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

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


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


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

  • 写回答

3条回答

  • Johan. 博客专家认证 2018-12-16 14:07
    关注

    正巧我遇到过这样的场景,在业务中需要用到下面的方式来加载 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指令来展示网页。
    
    评论

报告相同问题?

悬赏问题

  • ¥60 版本过低apk如何修改可以兼容新的安卓系统
  • ¥25 由IPR导致的DRIVER_POWER_STATE_FAILURE蓝屏
  • ¥50 有数据,怎么建立模型求影响全要素生产率的因素
  • ¥50 有数据,怎么用matlab求全要素生产率
  • ¥15 TI的insta-spin例程
  • ¥15 完成下列问题完成下列问题
  • ¥15 C#算法问题, 不知道怎么处理这个数据的转换
  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?