【问题标题】:Installing ActiveX control in 64bit IE在 64 位 IE 中安装 ActiveX 控件
【发布时间】:2012-03-25 15:29:01
【问题描述】:

我开发了一个 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");

【问题讨论】:

  • 我想你创建了两个不同的 dll,每个 cpu 架构一个,对吧?
  • @yms 不,我只是在尝试一个 ocx 文件

标签: visual-c++ mfc activex


【解决方案1】:

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

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

【讨论】:

  • 我应该对项目设置进行任何更改吗?
  • 是的,您需要将其配置为 64 位并重新构建,如果您不注意一些细节,您可能需要更改代码。见:Common Visual C++ 64-bit Migration Issues
  • 我已经为 64 位创建了 cab 文件,它工作正常。现在我有 2 个 CAB 文件 64 和 32。我应该如何使 html 加载适当的 cab?
  • 看看this question,我觉得会有帮助的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 2011-01-23
  • 2023-03-03
  • 1970-01-01
相关资源
最近更新 更多