我的公司已經創建了幾個COM對象,他們正在從.NET中愉快地使用它們。但是現在,我們的客戶想要改用Java。我認爲使用JACOB或j-interop(我不確定它們中的哪些)對於某些任務會很有趣,但是由此產生的代碼非常難以管理。所以我想寫一個可以讀取COM庫的TypeLib的工具,然後生成Java包裝類來隱藏所有那些難以管理的代碼。我是一個COM世界的新手,所以我不知道如何獲取有關介紹COM對象的接口,方法和參數的信息。我閱讀了一些名爲TypeLib的內容,但我不知道如何閱讀它。我如何從中獲取信息?如何用C#或C++讀取COM TypeLib?
4
A
回答
4
官方API可在這裏找到:Type Description Interfaces。你可以直接在C++中使用它,但是我建議你使用.NET(C#在我的示例中)和微軟早已寫過的一個額外工具(我的日期是1997年),名爲TLBINF32.DLL。它也是一個COM對象,但是自動化(VBScript,Javascript,VB/VBA)和.NET兼容。
你可以找到TLBINF32.DLL使用Google搜索(這個鏈接似乎今天工作:tlbinf32.dll download,確保你得到.ZIP文件,而不是他們所說的「修復程序」...)。請注意它是一個32位的DLL,因此您的程序必須編譯爲32位才能使用它。我不知道任何64位版本。
如何使用這個庫在這裏2000年12月MSDN雜誌的文章:Inspect COM Components Using the TypeLib Information Object Library詳細解釋。它是VB(不是.NET)導向的,但是用.NET來翻譯是很容易的。
這裏是C#示例控制檯應用程序,只是轉儲所有類型信息從類型LIB(這裏MSHTML.tlb的):
class Program
{
static void Main(string[] args)
{
TypeLibInfo tli = new TypeLibInfo();
tli.ContainingFile = @"c:\windows\system32\mshtml.tlb";
foreach (TypeInfo ti in tli.TypeInfos)
{
Console.WriteLine(ti.Name);
// etc...
}
}
}
相關問題
- 1. COM typelib疑問
- 2. COM端口C++讀取0xFF
- 3. 如何在命令行上從COM exe中提取TypeLib
- 4. 如何編寫C++ dll函數來獲取com端口讀取
- 5. 在C++中讀取COM端口數據
- 6. 如何讀取C++
- 7. 如何使用C#COM Interop
- 8. 用C#取消註冊COM#
- 9. C#COM而不引用MSCORLIB
- 10. 如何使用ODBC批量讀取或插入行? (在C或C++中)
- 11. 如何在c#或C++中讀取/寫入xmp元數據
- 12. C或C++中的COM端口庫
- 13. C++或c#如何與com端口一起工作?
- 14. 屬性文件讀取C(沒有C#或C++)使用MinGW
- 15. 如何讀取asp.net C#
- 16. QML:如何讀取C++
- 17. 使用C#或Java讀取XML文檔
- 18. 如何從C++ COM遷移到C++ CLI
- 19. 從COM TypeLib自動生成的C++類不會返回方法中的SAFEARRAY
- 20. 如何檢測在C++/COM
- 21. 使用COM或dotnet在PHP與DLL C#
- 22. 如何在沒有typelib的情況下找到COM的接口?
- 23. 在c中使用線程讀取com端口#
- 24. 使用C++ Builder從COM對象中讀取GUID屬性
- 25. 如何讓C#COM DLL相當於ATL COM C++
- 26. 如何用C或C++
- 27. C# - 生成typelib - 指定庫名稱?
- 28. 如何用C++或python從圖像中讀取圖像描述?
- 29. 讀取使用C#
- 30. C#如何讀取XML用的XElement