【问题标题】:Recompiled OCX is not initializing in Internet Explorer重新编译的 OCX 未在 Internet Explorer 中初始化
【发布时间】:2014-03-13 21:28:59
【问题描述】:

有人要求我维护这个用 VB6 编写的旧版 activeX。我已经确定了我需要对其进行的更改。但是一旦我重新编译并注册了activeX,对象就不会加载了

对象初始化如下图所示

<OBJECT style="display:none;" ID="Utils" Name="Utils" CLASSID="CLSID:EF82C1E0-36D4-4BDE-8EEB-10C7105C3FAF"></OBJECT>

稍后,在脚本中引用该对象,如下所示

if (typeof document.all.utils != "undefined" && document.all.utils != null)

这里 document.all.utils 是未定义的 :(

我已经挖了几个小时了,找不到任何有用的东西。我尝试通过http://msdn.microsoft.com/en-us/library/941zhks9%28v=vs.71%29.aspx,但该链接没有说明应该做些什么来确保对象可访问

谁能帮我做我需要的东西

【问题讨论】:

  • 您是否破坏了二进制兼容性?您的 LPK 文件是否已过期?是否有任何有用的症状(错误消息等)?
  • 我没有 LPK 文件。如何检查二进制兼容性?
  • 第一步是查看 IDE 的 Project Properties 的 Component 选项卡。这是您处理兼容性的地方。但归根结底,这一切都与类和类型信息以及 COM 接口版本中的 GUID 变化有关。可以请 VB6 程序员来帮助您吗?
  • 当我问这个问题时,我没有更改兼容模式。但你是对的,班级指南以某种方式改变了。我猜当我从 notepadd++ 保存项目文件时发生了这种情况。所以这在我删除本地副本并获得最新副本后开始工作。谢谢 Bob77

标签: javascript html vb6 activex


【解决方案1】:

正如 Bob77 所建议的,问题是我的班级 guid 已更改。显然它已经改变了,因为我保存了 .vbp 文件!!!不知道,那是怎么发生的。

验证类行会的最佳方法是查看注册表

Computer\HKEY_CLASSES_ROOT\[yourComponent]\Clsid

注意:这仅在您注册组件后才有效

为了解决这个问题,我只是删除了包含该项目的文件夹并从源代码管理中检查了最新的。一旦我有了最新的代码,它就会使用相同的类 guid 编译

以下链接对于遇到类似问题的任何人都非常有用

http://forums.asp.net/t/1547658.aspx?INTEROP+CLSID+changes+every+new+build+How+can+I+solve+it+as+application+asp+net+does+not+stop+when+new+DLL+is+registred+

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-07-10
    • 1970-01-01
    • 2017-03-13
    • 2014-06-16
    • 1970-01-01
    • 2013-04-15
    • 2012-02-15
    • 1970-01-01
    相关资源
    最近更新 更多