在64位IE中安装ActiveX控件

时间:2012-03-08 04:05:32

标签: visual-c++ mfc activex

我开发了一个MFC ActiveX控件并创建了必要的cab文件和inf文件。它在32位IE中完美运行。当我尝试在64位IE中访问它时,它提示我安装,但是当我尝试访问该函数时,它失败并在我调用该函数的行中出现错误消息“对象不支持此属性或方法”。我是否需要为64位IE做一些特别的事情?

解决方案

正如yms所提到的,我在64位模式下编译了我的控件并生成了2个CAB文件。我通过网页修改了下载适当的CAB文件

<script language="jscript">
document.write("<OBJECT width='600' height='300' id='ActiveXPowUpload' " 
    + "CLASSID='CLSID:FB98CEED-9DE1-4517-B30C-CDA19C6D150B' ");
if(navigator.cpuClass.toLowerCase() == "x64") {
    document.write("codebase='ActiveXPowUpload-x64.cab#Version=1,0,0,1'>\n");
} else {
    document.write("codebase='ActiveXPowUpload-x86.cab#Version=1,0,0,1'>\n");
}
document.write("<param name='UploadURL' value='http://hostname/path/to/upload/script.aspx' />\n");
document.write("<param name='EnablePopupMenu' value='false' />\n");
<!-- other parameters -->
document.write("</OBJECT>\n");

1 个答案:

答案 0 :(得分:1)

32位dll不能直接在64位应用程序中使用。您需要为每个CPU架构创建一个dll。

64位版本的Windows提供两种不同的注册表存储,一种用于32位应用程序,一种用于64位应用程序,因此您可以使用相同的GUID注册dll和类型库,每个应用程序将根据构建它的CPU架构。

相关问题