2010-05-24 29 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

相關問題