JeffryLI 发表于 2018-11-13 10:19:33

TrueDBGrid8将在Win7 64位Windows上运行,但它只能作为32位可执行文件运行,因为我们只使用旧的64位前编译器(VC 6.0)将其构建为32位执行。

如果程序是用VB 6.0编写的,那么从TDBGrid 4.0到TDBGrid8的迁移是直接的,因为只需要更改类型库guid(VBP文件)和frm和cls文件中的全名空间引用。迁移实用程序应该执行此操作。

如果客户程序是用C ++编写的,那么情况要困难得多,因为C ++程序直接使用OCX类ID而不是提取类型库,只能通过调度接口访问TDBGrid(任何版本) - 即控件和类是不是双接口。


如果程序是用VB 6.0编写的,因为迁移实用程序的图像会指示,那么遇到的任何困难很可能与注册有关。 TrueDBGrid 8.0是为原始的并排注册而设置的。要正确注册控件的设计时间,必须使用c1regsvr.exe程序。要注册网格以供运行时使用(客户端部署),可以使用regsvr32.exe注册控件,但它应位于全局路径环境变量(PATH)中的文件夹中,并且通常位于\ Windows \ SysWOW64中32位系统DLL的位置位于。

正确注册后,控件及其类应该在HKEY_CLASSES_ROOT的注册表中可用,并以TrueDBGrid80开头,例如:

   HKEY_CLASSES_ROOT \ TrueDBGrid80.TDBGrid

但是,必须在32位注册表项中指定这些位置的CLSID,而不仅仅是64位注册表项。这些可以检查为:

    HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \类\ CLSID \ {C5465D96-B469-4E03-A202-375447DE489D}

如果在设计时间内正确注册,则应该有一个TYPELIB条目:

    HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \类\的TypeLib \ {77DDF307-D82B-4757-8B3A-106EC9D75D4B}


如果在注册表项的默认值中存在OCX的完整文件路径,则它将是为设计注册的属性:

    HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \类\类型库\ {77DDF307-D82B-4757-8B3A-106EC9D75D4B} \ 8.0 \ 0 \ WIN32

如果TypeLib的注册表值中仅存在OCX名称,则它仅在运行时注册(通过regsvr32.exe)。


---

如果客户试图在.NET程序中使用OCX,则必须将程序限制为仅32位(x86)版本。 64位程序无法加载32位ocx。

请参考

ahasoft 发表于 2018-11-26 13:51:20

您好:

在Win10 64位元安裝無論是否關閉防火墻,都會出現如下的訊息



請協助,謝謝。

JeffryLI 发表于 2018-11-26 15:20:48

请重新开帖提问
页: 1 2 3 4 [5]
查看完整版本: Studio for ActiveX 註冊問題