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
请重新开帖提问