3

是否有关于 VBP(Visual Basic 项目)文件中使用的键/值的任何可用文档?我试图更好地理解 VBP 如何在内部处理引用。

示例行:

参考=*\G{BF204980-5E29-4945-AEB5-DDB284C568D3}#1.0#0#..\Project1.dll#Project1

4

2 回答 2

6

[MS-OVBA]中描述了引用的语法:

LibidReference     = "*\" LibidReferenceKind LibidGuid 
                     "#" LibidMajorVersion "." LibidMinorVersion 
                     "#" LibidLcid 
                     "#" LibidPath 
                     "#" LibidRegName

<LibidReferenceKind>: 

%x47 (G) <LibidPath> specifies a Windows file path.

%x48 (H) <LibidPath> specifies a Macintosh path.    

<LibidGuid>: The GUID of the Automation type library.

<MajorVersion>: An unsigned integer that specifies the
major version of the Automation type library.

<LibidMinorVersion>: An unsigned integer that specifies the
minor version of the Automation type library.

<LibidLcid>: The LCID of the Automation type library.

<LibidPath>: The path to the Automation type library.

<LibidRegName>: The Automation type library’s display name
于 2012-07-10T22:38:35.923 回答
3

对不起,但我在网上找到的最好的只是一个概述(http://www.securitypronews.com/it/applicationdevelopment/spn-19-20020115VisualBasicProjectFilesStructure.html)。

另请注意,VB 窗体中使用的 ActiveX 控件将在 *.frm 文件中具有引用条目。

我猜您正在寻找开发 ActiveX 项目(无论是 EXE、DLL 还是 OCX)。如果这是你的目标,这是我的建议:

(1) 了解二进制兼容性设置。

(2) 最好在您的参考可执行文件后面加上. .cmp,例如Project1.dll.cmp. 当您查找二进制兼容性时,您就会明白我的意思。

(3) 在 VirtualPC 中开发您的 VB6 ActiveX 项目;VB6 ActiveX 开发对 Windows 注册表进行了大量磨损。

Reference=(4)当VB有理由定位ActiveX对象时,设置中DLL/EXE/OCX的文件路径会发生变化;它将与在注册表中找到的任何内容一起使用(最新的注册获胜)。此外,还有“升级 ActiveX 控件”设置可以进行更改的项目属性。

(5) 您几乎无法控制 VB6 将生成的 GUID 或类型库,除非您可以通过适当的二进制兼容性管理来实现。


这就是我所知道的 - 从你上面的例子中,

表示 ActiveX 对象的BF204980-5E29-4945-AEB5-DDB284C568D3GUID。

指示 ActiveX 对象的1.0版本。

表示...我0不知道。

..\Project1.dll是 ActiveX DLL 所在(或曾经)所在位置的(相对)路径。

Project1是 ActiveX 对象的(友好的)名称。

于 2011-05-24T16:42:12.427 回答