首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何阅读COM TypeLib与C#或C++?

如何阅读COM TypeLib与C#或C++?
EN

Stack Overflow用户
提问于 2014-04-29 09:30:34
回答 1查看 3.1K关注 0票数 4

我的公司已经创建了几个COM对象,他们从.NET中愉快地使用了这些对象,但是现在,我们的客户想要改用Java。我认为在某些任务中使用JACOB或j-interop (我不确定它们中的哪一个)会很有趣,但是最终的代码是很难管理的。因此,我想编写一个工具,它可以读取COM库的TypeLib,然后生成用于隐藏所有这些不可管理代码的Java类。

我是COM世界的新手,所以我不知道如何获得描述COM对象的接口、方法和参数的信息。我读到了一些叫做TypeLib的东西,但我不知道怎么读。我怎样才能从中获得信息?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 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):

代码语言:javascript
复制
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...
        }
    }
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23360770

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档