使用 CreateObject ActiveX 组件无法创建带有注册类库的对象
Posted
技术标签:
【中文标题】使用 CreateObject ActiveX 组件无法创建带有注册类库的对象【英文标题】:Using CreateObject ActiveX component can't create object w/ Registered Class Library 【发布时间】:2014-07-16 14:49:25 【问题描述】:我在visual basic.net 中编写了一些类,并希望在visual basic 6 应用程序中使用它们。
现在我已经在我的计算机上注册了 tlb/dll 文件,我可以使用
在 vb6 中创建该类的实例Dim c As New Advantage_Dealer_Email_CoreClassLibrary.CoreClass
但是我想使用 CreateObject(Class),但是当我尝试时出现 ActiveX 错误,这是我正在使用的代码
Dim c As Object
Set c = CreateObject("Advantage.Dealer.Email.CoreClassLibrary.CoreClass")
这可能是我做错了什么吗?
谢谢
更新: 通过注册表搜索后,我只能找到引用 Advantage.Dealer.Email.CoreClassLibrary 的 CLSID。
CFB8F7A1-BC6F-4771-839F-1343785ED9D6 > 1.0 > (Default) REG_SZ Advantage.Dealer.Email.CoreClassLibrary
解决方案
我又查看了注册表,发现了一个名为
的 GuidCoreClassInterface
当我使用代码时,它引用了该库
CreateObject("CoreClassInterface")
vb6 程序有效。
对于以后遇到这篇文章的人来说,这是因为我在 vb.net 类中设置了 ProgID,当时我使用 Com Interop 的接口设置类。
<Guid("7EB55A33-34E7-4FC4-A87B-41635EEAF32D"), ClassInterface(ClassInterfaceType.None), ProgId("CommClassInterface")> Public Class CoreClass : Implements _CoreClassInterface
删除类的 ProgID 并在我的计算机上重建/注册库后,我发现
Advantage.Dealer.Email.CoreClassLibrary.CoreClass
在注册表中,我的 vb6 应用程序正常工作。
感谢您的帮助tcarvin
【问题讨论】:
import vb.net class library to vb6 project的可能重复 并非如此,即使在变暗时,该帖子的 OP 也会出现完全不同的错误。当我尝试使用“CreateObject”做同样的事情时,我可以成功地创建类的暗淡 您应该在 HKCR\CLSID 下找到 GUID,并且在该 GUID 下您应该看到 InprocServer、ProgId 等的其他键。同样,您的 ProgId(由 CreateObject 使用)应该在 HKCR 中并且应该指向 GUID。 【参考方案1】:我发现在创建 .NET 库以供 VB6 使用时,最好将 COM 可见类的命名空间保持在一层深度以避免下划线。无论如何,您是否尝试过使用:
CreateObject("Advantage_Dealer_Email_CoreClassLibrary.CoreClass")
当所有其他方法都失败时,答案就在您的注册表中。使用 regedit 并查看下面列出的组件。
【讨论】:
我尝试过使用 CreateObject("Advantage_Dealer_Email_CoreClassLibrary.CoreClass") 得到相同的结果我也不完全确定我在注册表中寻找什么,你有一个例子吗? 在 HKEY_CLASSES_ROOT 中搜索 CoreClass。您通常会以 ProjectName.ClassName 或 PackageName.Classname 格式看到它。当您使用CreateObject
时,它会在注册表中进行查找。如果您找到它,请将详细信息发布到您的问题中并进行编辑,以便我们进行审核。
您在 com-visible 类中的 ClassInterface 属性中使用了什么?
您是否尝试通过 ProgId 属性显式设置您的编程 ID?尝试不带点“。”的命名空间和程序集名称。在里面,注册它,然后通过regedit重复搜索,看看你是否有更多的成功。以上是关于使用 CreateObject ActiveX 组件无法创建带有注册类库的对象的主要内容,如果未能解决你的问题,请参考以下文章
错误 429 excel vba activex CreateObject(“SAP.Functions”)
带重定向的chilkat ActiveX HTTP组件的问题
无法在 Windows 7 x64 上使用 VB 脚本中的 CreateObject