我的公司已经创建了几个COM对象,他们从.NET中愉快地使用了这些对象,但是现在,我们的客户想要改用Java。我认为在某些任务中使用JACOB或j-interop (我不确定它们中的哪一个)会很有趣,但是最终的代码是很难管理的。因此,我想编写一个工具,它可以读取COM库的TypeLib,然后生成用于隐藏所有这些不可管理代码的Java类。
我是COM世界的新手,所以我不知道如何获得描述COM对象的接口、方法和参数的信息。我读到了一些叫做TypeLib的东西,但我不知道怎么读。我怎样才能从中获得信息?
发布于 2014-04-29 12:12:01
官方API可以在这里获得:类型描述接口。
您可以直接从C++中使用它,但我建议您使用.NET (我的示例中的C#)和微软很久以前编写的一个额外工具,名为TLBINF32.DLL。它也是一个COM对象,但它是自动化(VBScript、Javascript、VB/VBA)和.NET兼容的。
您可以找到TLBINF32.DLL搜索它(这个链接现在看来是有效的:下载tlbinf32.dll,确保您得到的是.ZIP文件,而不是他们所说的“固定程序”)。注意,它是一个32位的DLL,所以你的程序必须编译成32位才能使用它。我不知道任何64位版本,但是如何在64位客户机中使用它是这样描述的:64位.Net应用程序中的tlbinf32.dll。
如何使用这个库在2000年12月的MSDN杂志的文章“使用TypeLib信息对象库检查COM组件”中有详细的说明。它是面向VB的(不是面向.NET的),但它很容易用.NET术语进行翻译。
下面是C#中的一个示例控制台应用程序,它只是转储库类型中的所有类型信息(这里是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...
}
}
}https://stackoverflow.com/questions/23360770
复制相似问题