Ale*_*ext 4 c# c++ java com typelib
我的公司已经创建了几个COM对象,他们在.NET中愉快地使用它们.但现在,我们的客户想要改为Java.我认为使用JACOB或j-interop(我不确定它们中的哪一个)来执行某些任务会很有趣,但结果代码非常难以管理.所以我想编写一个工具,可以读取COM库的TypeLib,然后生成Java包装类,用于隐藏所有那些无法管理的代码.
我是COM世界的新手,所以我不知道如何获取有关描述COM对象的接口,方法和参数的信息.我读到了一些名为TypeLib的内容,但我不知道如何阅读它.我怎样才能从中获取信息?
官方API可在此处获得:类型描述接口.
您可以直接在C++中使用它,但我建议您使用.NET(我的样本中的C#)以及Microsoft很久以前编写的额外工具(我的日期是1997年),名为TLBINF32.DLL.它也是一个COM对象,但是自动化(VBScript,Javascript,VB/VBA)和.NET兼容.
你可以找到它的TLBINF32.DLL谷歌搜索(这个链接似乎今天工作:tlbinf32.dll下载,确保你得到.ZIP文件,而不是他们称之为"修复者"......).请注意,它是一个32位DLL,因此您的程序必须编译为32位才能使用它.我不知道任何64位版本.
如何使用此库将在2000年12月MSDN杂志的文章中详细解释:使用TypeLib信息对象库检查COM组件.这是面向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...
}
}
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
2192 次 |
最近记录: |