2010-05-24 28 views
1

我想从ABAP调用ActiveX DLL或OLE2对象。如何知道应用程序是否支持OLE2以及公开哪些方法和属性?

我已经知道如何实例化对象的语法&执行方法:

data: my_object type ole2_object. 

create object my_object <ole2object>. 

call method of my_object <objectmethod>. 

但考虑到特定的应用程序,我怎么知道这是支持,什么值/名称ole2object的objectmethod是?

事务SOLE提供了一个OLE应用程序的表格,其中包括Excel.Application,我知道它可以实例化为一个OLE对象,所以它看起来像您必须首先将OLE2应用程序添加到该表格,但是又一次我是否可以读取CLSID & LibType的数据 - 是否将其作为应用程序的一部分发布?

回答

1

在这种情况下,您只需使用OLE2访问COM接口。如果您正在访问Office应用程序,则可能需要查看KB222101。对于其他应用程序和库,您需要API文档,一些合适的示例(不一定在ABAP中,VB将会很好)。一个尖尖的棍子来捅开发者或全部三个...

哦,并且有一个叫做MiTeC的OLE/COM Object Explorer,它可以是downloaded for free from their website。我自己并没有使用它,但它看起来可能有帮助。

+0

vwegert您好,感谢您的回答。请记住,如果我在安全无人驾驶飞机上使用尖杆,相信开发人员不能信任他们在工作PC上拥有本地管理员权限? – Esti 2010-05-24 20:59:50

+0

@Esti:马上行动 - 不要忘了用棍子的钝端击败那些开发人员陷入无意识状态,他们在本地PC上编写需要管理员权限的应用程序才能运行... – vwegert 2010-05-25 18:12:07

+0

接受用这个答案为对MiTeC的OLE/COM浏览器的引用,迄今为止这是最有用的工具。我以前曾尝试使用微软的OLE/COM浏览器,但它在较新版本的Windows上有问题。 – Esti 2010-05-31 03:29:04

2

对象来自表TOLE。他们的方法和propeties存储在OLELOAD表中。

我前一段时间发现了一些文档(this onethis one),其中包含有关如何找到属性和方法的说明。

CLSID上的指示是缓慢的,但它似乎是寄存器中HKEY_CLASS_ROOt/CLSID的值与指定的应用程序一起使用(例如,VISIO.APPLICATION为例)。如果使用regedit搜索此应用程序值,则会找到相应的CLSID。

希望这有助于
纪尧姆

+0

感谢您的回答PATRY – Esti 2010-05-24 21:00:53

相关问题