2013-10-14 32 views
0

我需要COM對象公開的方法和屬性的列表。我能夠延遲綁定對象並使用我在示例代碼片段中找到的一些基本方法,但我需要找出對象上的方法和屬性的完整列表。如何從後期綁定的COM對象中獲取方法列表

更多信息:

我試圖從一個相當老的系統中提取數據,但無法早期綁定任何的DLL。

我確實有一些來自公司的示例代碼片斷,它們創建了這些dll(它與軟件一起打包),但是它沒有代碼用於我從他們的示例應用程序中看到的所有高級功能(我沒有源代碼)。

我已經嘗試過使用反射沒有太大的成功。

回答

4

假設您不需要以編程方式訪問信息,最簡單的方法就是使用OLE-COM對象查看器。該工具是Windows SDK的一部分。

運行後,查看類型庫節點並找到您正在使用的組件的類型庫。類型庫查看器將顯示組件定義的所有調度接口。

+0

我已經有了一臺Vb6/Visual Studio 2005-2010的機器。還有一些DLL是16位,所以他們不會在Windows 7工作。 – Jastill

+0

我鏈接到Windows 7 SDK,因爲它是最容易找到,OLE COM查看器應用程序將在早期版本的Windows上工作(幷包含在較早版本的平臺SDK) – William

1

如果無法將DLL添加到VB6中的引用對話框中,則DLL中沒有嵌入類型庫資源。如果您可以加載DLL,您應該能夠使用F2來調出對象瀏覽器,並查看組件的所有屬性和方法。

這似乎不太可能,你還沒有嘗試過。所以有三種可能性:

  1. 有一個組件的外部類型庫。
  2. 將DLL添加爲引用時出現錯誤,實際上表示VB IDE在組件中找不到類型庫。
  3. 將DLL添加爲引用時出現錯誤,如「無法加載DLL」。

就在1的情況下 - 檢查該組件是否存在TLB或OLB文件。 如果你在2中得到錯誤 - 那麼你的運氣不好。您將需要訪問文檔和/源代碼。 如果你在3中得到錯誤 - 那麼可能有一個依賴庫沒有被註冊。嘗試查找相關的TLB或DLL,並註冊它。

+0

我覺得我不幸在這一個運氣不好。當我延遲綁定對象時,我能夠對一些方法名稱進行有根據的猜測。但這不足以完成手頭的任務。 – Jastill

+0

你可以嘗試從可執行文件中挑選出所有的字符串。但是你仍然需要解決方法參數。此組件是作爲第三方組件出售的嗎? –

+0

它在15年前停止了「出售」。我們正在升級到新系統。 – Jastill

相關問題