您好,我创建了 C# Exe Com Server 并从 VB6 应用程序引用它。 问题是所有枚举在 vb 应用程序中都以“奇怪的名称”公开:EnumName_EnumeItem,而从当时的 VB6 代码中引用为 EnumName.EnumItem。
无法修改 VB6 应用程序代码。 想知道我看到我可以通过更改来自 tlb 的 idl 提取来更改此定义,但未能确切了解它是如何完成的,以及完成这项工作的工具是什么。
关于如何尽可能轻松地设置枚举有什么建议吗?
代码:
public enum enResultCode : uint
{
enRCNone = 0x00000000,
enRCNotFound = 0x00000001,
enRCFoundOnServer = 0x00000002,
enRCFoundOnLocal = 0x00000003,
enRCDatabaseError = 0x00000004,
enRCAborted = 0xFFFFFFFF,
enRCServerError = 0xFFFFFFFE,
enRCLocalError = 0xFFFFFFFD
}
在 VB6 中显示为:
代替:
enResultCode.EnumItemName
最佳答案
我认为您是对的,唯一的方法是自己修改 IDL。我可以告诉你一些关于它是如何完成的......
- 运行 tlbexp.exe 从 C# 程序集创建 tlb。
- 您运行 oleview.exe 打开那个 tlb 并检查 IDL。您可以将该 IDL 保存到文件或复制/粘贴它。
- 您编辑 IDL 以赋予它所需的枚举项名称。
- 运行 midl.exe 以从修改后的 IDL 生成 tlb。
这应该够了。抱歉,我无法为您提供所有正确的命令行开关,但我现在不在 Windows 计算机上。
关于C# Com 枚举和 VB6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7416720/