我正在做一些考古学,处理COM +
我设法将一个简单的COM dll作为COM +组件,到目前为止一直很好。
所以我有这个'foobar'com +组件,它的界面,以及我想要调用的方法。
我的问题很简单:我该怎么调用这个组件?
接受任何.NET或VB6答案(我必须检查组件是否正常,不关心客户端)
由于
编辑(06/03/09):好吧,我很困惑。为了正常工作,我的COM +组件需要它才能被注册。为什么不?但是,如何确定我正在进行COM +调用,而不是COM调用?
答案 0 :(得分:2)
最简单的VB.NET代码片段:
Dim myCom As Object
myCom = CreateObject("MyCom.ProgId")
myCom.Method(parms)
您需要将“MyCom.ProgId”替换为组件的实际ProgId - 您可以从组件服务管理工具中组件属性的“常规”选项卡中获取此信息(听起来您已经掌握了那个)
myCom.Method(parms)
只是一个占位符,用于您想要调用的任何方法,使用方法所需的参数。
这是一些VB.NET语法示例的链接:
http://msdn.microsoft.com/library/de...eateObject.asp
答案 1 :(得分:1)
Adam在VB6中的代码类似:
Dim myCom As Object
Set myCom = CreateObject("MyCom.ProgId")
myCom.Method(parms
这个例子是后期绑定的,并带有一些性能损失。 您可以以早期约束的方式调用您的方法,这可以避免惩罚。在VB6或VB.NET中,只需将COM + dll添加到引用中,就可以这种方式调用对象:
VB6
dim myCom as MyCom.ProgId
set myCom = new MyCom.ProgId
myCom.Method
VB.NET
dim myCom as new MyCom.ProgId
myCom.Method(...)
答案 2 :(得分:1)
如果你想要的是在调用时检查组件是否响应,那么使用快速VBScript而不是在VB6 / VB.NET中构建一些东西。
Dim o : Set o = CreateObject("Lib.Class")
o.YourMethod "someParam"
在组件服务中观察您的COM +应用程序,看看请求的类是否会旋转。
答案 3 :(得分:1)
如果要将COM +用于RMI,请使用此
Dim o As Object
Set o = CreateObject("Lib.Class", "MYSERVER")
其中MYSERVER是创建COM +应用程序并注册DLL的机器名称。随后
o.YourMethod "someParam"
将被远程调用。如果您只使用自动化兼容接口,COM +将成功为RMI创建代理。否则,您需要在客户端计算机上提供typelib。这可以是单独的TLB或DLL本身。