64位ActiveX控件的测试和使用

时间:2022-09-13 21:00:51
在64位系统下,不管是打开Program files 里面的IE还是Program files (X86)里面的IE,在任务管理器都会出现两个进程,一个64位的,另一个是32位的。 目前我做好的64位控件是这样的,在把IE设置为单进程模式,使用Program files里面的IE(X64)能够加载并正常使用控件,如果不设置为单进程模式,则加载不到。
我现在想满足这样的需求:64位的系统,在只注册64位ActiveX控件情况下,不需要把IE设置为单进程模式也能正常加载64位控件,有没有可能? 

64位系统我尝试了win10,win7旗舰版都不行。另外、设置IE为单进程模式,具体操作:运行gpedit.msc组策略管理器。在“计算机配置—》管理模板—》windows组件—》Internet Explore”中打开“选项卡进程增长”,设置为已启用,选项卡进程增长为0。应用之后IE就进入单进程模式。

14 个解决方案

#1


为什么没人? 自顶......

#2


64位的IE和32位的IE是两个不同的进程。

#3


赵4老师,您能说清楚点? 
如果我只注册了64位的控件,在64位系统下(我的是win7旗舰版,IE11),怎么使用我的控件? 

#4


这个办法不是很多
我也没有测试
我估计这个是64位ie多选项卡的关系
不过你可以用注册表设置ie为单进程
安装的时候改注册表就好
HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main/TabProcGrowth

设置为dword 0就可以

#5


另外你可以做成32位模式看看
因为Microsoft建议在多数情况下使用32位版本的Internet Explorer。使用32位Internet Explorer不会限制向64位技术的迁移,原因是客户端层通常保持为32位,因为迁移到64位对于客户端层没什么直接的好处。

#6


引用 5 楼 aspower_ 的回复:
另外你可以做成32位模式看看
因为Microsoft建议在多数情况下使用32位版本的Internet Explorer。使用32位Internet Explorer不会限制向64位技术的迁移,原因是客户端层通常保持为32位,因为迁移到64位对于客户端层没什么直接的好处。


我可以理解为,尽管在64位windows系统下,只有当你把IE设置为单进程模式,并且使用了64位IE,才能使用到64位ActiveX吗?

#7


引用 6 楼 u012365762 的回复:
Quote: 引用 5 楼 aspower_ 的回复:

另外你可以做成32位模式看看
因为Microsoft建议在多数情况下使用32位版本的Internet Explorer。使用32位Internet Explorer不会限制向64位技术的迁移,原因是客户端层通常保持为32位,因为迁移到64位对于客户端层没什么直接的好处。


我可以理解为,尽管在64位windows系统下,只有当你把IE设置为单进程模式,并且使用了64位IE,才能使用到64位ActiveX吗?

恩,msdn上这方面的资料不多,我只找到上面一段话
我个人估计可能是这样的

#8


引用 2 楼 zhao4zhong1 的回复:
64位的IE和32位的IE是两个不同的进程。

还是非常感谢aspower_ ,我这边在MSDN上找到的信息大概也是如此。赵4老师有什么看法吗?  我看你之前对这一方面有研究,希望你能帮我讲解一下。

#9


引用 8 楼 u012365762 的回复:
Quote: 引用 2 楼 zhao4zhong1 的回复:

64位的IE和32位的IE是两个不同的进程。

还是非常感谢aspower_ ,我这边在MSDN上找到的信息大概也是如此。赵4老师有什么看法吗?  我看你之前对这一方面有研究,希望你能帮我讲解一下。

其实我所谓的研究也止于此而已:
在64位Windows下:
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
    在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
    且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll

#10


引用 8 楼 u012365762 的回复:
Quote: 引用 2 楼 zhao4zhong1 的回复:

64位的IE和32位的IE是两个不同的进程。

还是非常感谢aspower_ ,我这边在MSDN上找到的信息大概也是如此。赵4老师有什么看法吗?  我看你之前对这一方面有研究,希望你能帮我讲解一下。

他研究

引用 8 楼 u012365762 的回复:
Quote: 引用 2 楼 zhao4zhong1 的回复:

64位的IE和32位的IE是两个不同的进程。

还是非常感谢aspower_ ,我这边在MSDN上找到的信息大概也是如此。赵4老师有什么看法吗?  我看你之前对这一方面有研究,希望你能帮我讲解一下。

他研究个p,翻来覆去的轱辘话

#11


研究结果越能解决问题,被当作轱辘话的概率越高。
存在即合理。

#12


谢谢楼主及各位,帮了很大的忙! 
为了让64位ActiveX控件运行在64位IE上,我的机器为win7-64位,IE改成单进程模式需要修改注册表中的两个地方:
把HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main中的AdminTabProcs和FrameTabWindow项值都改为0即可。

#13


最简单你弄2个控件就行了,32位一个,64位一个,同时安装。

#14


楼主问题解决了吗?我也有同样的需求:
就是在64位的系统,只注册64位ActiveX控件情况下,不需要把IE设置为单进程模式也能正常加载64位控件

#1


为什么没人? 自顶......

#2


64位的IE和32位的IE是两个不同的进程。

#3


赵4老师,您能说清楚点? 
如果我只注册了64位的控件,在64位系统下(我的是win7旗舰版,IE11),怎么使用我的控件? 

#4


这个办法不是很多
我也没有测试
我估计这个是64位ie多选项卡的关系
不过你可以用注册表设置ie为单进程
安装的时候改注册表就好
HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main/TabProcGrowth

设置为dword 0就可以

#5


另外你可以做成32位模式看看
因为Microsoft建议在多数情况下使用32位版本的Internet Explorer。使用32位Internet Explorer不会限制向64位技术的迁移,原因是客户端层通常保持为32位,因为迁移到64位对于客户端层没什么直接的好处。

#6


引用 5 楼 aspower_ 的回复:
另外你可以做成32位模式看看
因为Microsoft建议在多数情况下使用32位版本的Internet Explorer。使用32位Internet Explorer不会限制向64位技术的迁移,原因是客户端层通常保持为32位,因为迁移到64位对于客户端层没什么直接的好处。


我可以理解为,尽管在64位windows系统下,只有当你把IE设置为单进程模式,并且使用了64位IE,才能使用到64位ActiveX吗?

#7


引用 6 楼 u012365762 的回复:
Quote: 引用 5 楼 aspower_ 的回复:

另外你可以做成32位模式看看
因为Microsoft建议在多数情况下使用32位版本的Internet Explorer。使用32位Internet Explorer不会限制向64位技术的迁移,原因是客户端层通常保持为32位,因为迁移到64位对于客户端层没什么直接的好处。


我可以理解为,尽管在64位windows系统下,只有当你把IE设置为单进程模式,并且使用了64位IE,才能使用到64位ActiveX吗?

恩,msdn上这方面的资料不多,我只找到上面一段话
我个人估计可能是这样的

#8


引用 2 楼 zhao4zhong1 的回复:
64位的IE和32位的IE是两个不同的进程。

还是非常感谢aspower_ ,我这边在MSDN上找到的信息大概也是如此。赵4老师有什么看法吗?  我看你之前对这一方面有研究,希望你能帮我讲解一下。

#9


引用 8 楼 u012365762 的回复:
Quote: 引用 2 楼 zhao4zhong1 的回复:

64位的IE和32位的IE是两个不同的进程。

还是非常感谢aspower_ ,我这边在MSDN上找到的信息大概也是如此。赵4老师有什么看法吗?  我看你之前对这一方面有研究,希望你能帮我讲解一下。

其实我所谓的研究也止于此而已:
在64位Windows下:
64位exe和dll在目录c:\windows\sys tem32目录下;
32位exe和dll在目录c:\windows\sys wow64目录下;
所以要注意:
    在win64位系统下注册32位ocx或dll需要将32位ocx或dll拷贝到c:\windows\syswow64\目录下。
    且注册要用c:\windows\syswow64\regsvr32 xxxxxxx.ocx或dll

#10


引用 8 楼 u012365762 的回复:
Quote: 引用 2 楼 zhao4zhong1 的回复:

64位的IE和32位的IE是两个不同的进程。

还是非常感谢aspower_ ,我这边在MSDN上找到的信息大概也是如此。赵4老师有什么看法吗?  我看你之前对这一方面有研究,希望你能帮我讲解一下。

他研究

引用 8 楼 u012365762 的回复:
Quote: 引用 2 楼 zhao4zhong1 的回复:

64位的IE和32位的IE是两个不同的进程。

还是非常感谢aspower_ ,我这边在MSDN上找到的信息大概也是如此。赵4老师有什么看法吗?  我看你之前对这一方面有研究,希望你能帮我讲解一下。

他研究个p,翻来覆去的轱辘话

#11


研究结果越能解决问题,被当作轱辘话的概率越高。
存在即合理。

#12


谢谢楼主及各位,帮了很大的忙! 
为了让64位ActiveX控件运行在64位IE上,我的机器为win7-64位,IE改成单进程模式需要修改注册表中的两个地方:
把HKEY_CURRENT_USER/Software/Microsoft/Internet Explorer/Main中的AdminTabProcs和FrameTabWindow项值都改为0即可。

#13


最简单你弄2个控件就行了,32位一个,64位一个,同时安装。

#14


楼主问题解决了吗?我也有同样的需求:
就是在64位的系统,只注册64位ActiveX控件情况下,不需要把IE设置为单进程模式也能正常加载64位控件