none
64位IE有加载64位Activex控件,html标签<object>却没有显示控件 RRS feed

  • 问题

  • 背景:本人做的是视频控件,之前实现的32位版本的,现需要实现64位版本。

    生成64位控件:将32位的代码包含新的lib库和64为动态链接库后,重新生成64位的.ocx文件。

    使用ActiveX test container测试:使用MS的ActiveX test Container进行测试,并且32位的test Container调用的是32的控件,64位的test Container调用的是64位的控件,且功能正常。

    问题: 但是,在windows7(X64)和windows10(X64)的IE中,用html使用<object>标签,却发现:如果只注册64位的控件,使用64位的IE, 发现在IE的加载项中可以看到64位的控件,但是网页页面却没有显示出控件来。有没有人有同样经历的? 有没有大神知道怎么解决?

    2016年2月19日 9:35

答案

  • 还是非常感谢 Hart Cheng。

    我的问题已经解决了。

    原因是:64位系统下,IE8及IE8以上的IE默认会为每个标签页都启动一个进程。尽管使用64位的IE打开一个网页,你会在任务管理器中发现多了两个iexplore.exe进程,一个IE进程(64-bit),一个是标签页进程(32-bit)。我猜想,默认是使用32位的标签页进程去调用控件,所以无法打开64位ActiveX控件。

    解决方法:   设置IE为单进程模式。

    具体操作:运行gpedit.msc组策略管理器。在“计算机配置—》管理模板—》windows组件—》Internet Explore”中打开“选项卡进程增长”,设置为已启用,选项卡进程增长为0。应用之后IE就进入单进程模式。这时候使用C:\Program Files\Internet  Explore目录下的iexplore.exe(该目录下IE为64-bit),去打开调用64位控件的html文件,就能成功的调用64位控件了。



    2016年3月9日 14:16

全部回复

  • 你好:

    感谢分享你的问题。

    根据你的描述,我这边受环境限制,并不能重现你的问题。既然是控件不能显示,没有其他的错误,我建议你去调试这个IE的代码,你可以用F12去调试,看问题代码有没有被执行,详细的步走你可以看一下这个文档https://msdn.microsoft.com/en-us/library/gg589507(v=vs.85).aspx

    这里面有图文解释,教如何去实现调试。

    有什么最新的情况,希望告知。

    2016年2月22日 2:22
    版主
  • 非常感谢你的回答。

    f12似乎只能调试到网页的方面的代码,我的网页代码只是在html上简单的使用<object>标签,所以,<object>标签肯定会被执行的,且当我使用注册32位的控件时,网页能正常加载32位控件。

    有没有其他方面的建议? 非常感谢!

    2016年3月9日 7:58
  • 你好,

    刚才我在网上搜索一下,发现WIN7的透明主题会影响带IE控件的不显示,但是那个是IE8的问题,不知道你用的是IE哪个版本,你可以看一下这个文章.

    http://answers.microsoft.com/en-us/ie/forum/ie8-windows_7/ie-8-win-7-does-not-display-parts-of-website-when/d10d2b5e-a8c0-4aca-95ed-0092b056b87c

    如果问题解决了,请及时mark帖子。

    2016年3月9日 8:23
    版主
  • 还是非常感谢 Hart Cheng。

    我的问题已经解决了。

    原因是:64位系统下,IE8及IE8以上的IE默认会为每个标签页都启动一个进程。尽管使用64位的IE打开一个网页,你会在任务管理器中发现多了两个iexplore.exe进程,一个IE进程(64-bit),一个是标签页进程(32-bit)。我猜想,默认是使用32位的标签页进程去调用控件,所以无法打开64位ActiveX控件。

    解决方法:   设置IE为单进程模式。

    具体操作:运行gpedit.msc组策略管理器。在“计算机配置—》管理模板—》windows组件—》Internet Explore”中打开“选项卡进程增长”,设置为已启用,选项卡进程增长为0。应用之后IE就进入单进程模式。这时候使用C:\Program Files\Internet  Explore目录下的iexplore.exe(该目录下IE为64-bit),去打开调用64位控件的html文件,就能成功的调用64位控件了。



    2016年3月9日 14:16
  • 非常感谢zhan泽亮分享你的解决方案。问题已经解决,请及时mark你的帖子。

    谢谢

    Hart Cheng

    2016年3月10日 6:04
    版主
  • 我想请问下,在64位windows系统下,难道只能把IE设置为单进程模式才能使用64位ActiveX控件?如果我只注册了64位的控件,不作特殊设置的IE加载不到64位的Activex控件吗? 我总不能要求我的客户一定要把IE设置为单进程模式吧,那对于要使用到32位控件又得把IE设置为原来的模式。。。
    2016年3月13日 15:49