我正在尝试理解COM的概念。据我所知: COM是一个二进制接口或执行函数库(在机器语言中),任何编程语言都可以在供应商公开的函数和属性的帮助下对其进行扩展或重用。
因此,在下面的代码中,我们可以说创建的Fso或Txtobj对象是COM或ActiveX对象吗?
如果我们想在Java等其他编程语言中创建相同的文件系统或文本流对象,我们应该怎么做?因为我们说COM是独立于语言的。
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Txtobj = Fso.CreateTextFile("C:\Users\ACER\Desktop\Project Folder\NewText_5.txt")发布于 2013-02-24 13:37:16
如果我正确理解你的问题是什么:
某些东西是基于其构建方式的COM对象,用于将其功能公开给使用它的其他代码。它必须遵循某些规则,并且必须提供某些强制性的功能,并且必须在二进制级别(位和字节)以一种非常具体的方式做到这一点。不幸的是,具体的规则很长,太复杂了,无法在这个答案中解释。
使用该对象的代码还必须遵守一些规则和特定的二进制要求。
语言独立性来自于这样一个事实,即规则是如此精确,并且它们的设计使它们不受任何特定语言的约束。许多语言可以用来编写COM对象,并且许多语言可以使用COM对象。我的意思是,这些语言需要提供一种机制,让程序员遵守这些规则。这是关键:规则没有具体说明语言应该如何使遵守规则成为可能。每种语言都有不同的方式;一些语言会自动为您处理许多细节,而另一些语言则需要您手动完成大部分工作。有些只针对COM使用特殊的语法,而其他的则使用与其他所有内容相同的语法。
请注意,“语言独立性”(我称其为“语言中立性”更为恰当)与“语言普遍性”不同。并不是每种语言都可以使用COM。
考虑到这一点,你的答案是:
1)如何通过读取一行代码(如示例中的代码)来确定某个对象是否是COM对象?
真正的答案是:“这取决于对象是如何编写的。如果它的编写遵循COM的规则,并且在您的语言中通过COM机制调用它,那么它就是一个COM对象”。在查看代码并尝试在不查看对象详细信息的情况下确定它是否为COM的特定情况下,答案是:“这取决于语言”。
在您的VBScript示例代码中,两者都是COM对象。表达式使用Set命令这一事实立即告诉您,变量将引用COM对象。请记住,答案在其他语言中会有所不同(例如,即使在VB6中,set的存在也不足以知道该对象是否为COM对象)。
2)语言独立性是如何实现的?
它是通过在二进制级使用严格的规则来实现的。不同的语言以不同的方式遵守规则,这是可以接受的。有些语言不能遵守这些规则,因此它们不支持COM。
您显示的那些特定对象有其自己的功能,是的,它们通过函数和属性工作;这些是一些规则。如果一种语言没有允许您调用这些函数的机制,则该语言不能用于使用COM对象。
如果你想学习规则,它们通常是用C或C++表示的,关于这个主题最好的书之一是Don Box的"Essential COM“。
https://stackoverflow.com/questions/15044106
复制相似问题