2009-08-06 34 views
2

我目前正在開發什麼是或多或少的腳本,需要從VB 6 COM DLL中獲取一些數據。這個DLL目前用於MS Word VBA項目,並將類等導出到VBA代碼中。它被添加到VBA編輯器的Tools - > References菜單中,我可以在VBA的對象瀏覽器中看到它的類。如何在IronPython中使用VB6 COM'參考'?

從我讀,有可能在VB.NET使用VB6 COM庫(或至少,它應該是可以的。),因爲它應該在VB.NET是可能的,而且由於.NET運行在CLR上,由於IronPython在邏輯上不能從IronPython訪問這個古老的DLL嗎?

我曾嘗試在IronPython的import clr; clr.AddReferenceToFileAndPath(dllpath),但不斷收到「IO錯誤:文件不存在」,這顯然是錯誤的。

如果任何人都可以點我在/任何/ .NET語言使用VB6 COM對象,這將不勝感激。

謝謝!

PS:不,我不能編輯/查看COM DLL的源代碼,它是第三方專有的東西。PPS:任何方式我可以得到GUID/COM的名字;的DLL?

回答

1

你需要生成一個運行時COM包裝使用tlbimp工具組件,並添加引用到;支持.net屬性的語言可以明確地完成互操作,但即使在那裏,自動生成包裝也非常簡單。

檢查包裝組件ildasm將顯示究竟是如何轉換已經完成。

+0

謝謝!它工作得很好。我在IronPython的互操作程序集中添加了參考,並且所有內容都是「Just Works」!這通常不會發生:) – 2009-08-06 08:23:08

0

在任何.NET語言(在Visual Studio,不知道是否有IronPython的完整的語言支持那裏,或者如果它僅在具有.NET框架?CLR的運行),你乾脆去添加引用對話框中,選擇COM選項卡中,選擇庫(很像在VB6/VBA引用對話框中),並且基本完成。 VisualStudio然後爲您生成一個.NET interop程序集,它是COM庫的中間人,您可以像使用.NET程序集一樣使用它。如果IronPython在VisualStudio中受支持,那可能是你應該做的。

如果不是,那麼您需要找出VisualStudio使用哪個命令行工具生成互操作程序集(有點像添加Web引用時使用的WSDL.EXE),請使用該工具手動生成互操作程序集並使用IronPython就像你使用其他.NET程序集一樣。我現在沒有檢查Google/MSDN的任何細節,因爲我只在Visual Studio中執行C#工作,所以我從來沒有真正需要它。