3

Hi I created C# Exe Com Server and refer it from VB6 application. The problem is that all the enums are exposed with "strange name" in the vb app: EnumName_EnumeItem, while reffered from then VB6 code as EnumName.EnumItem.

The VB6 application code cannot be modified. Wondering around I saw I can change this definitions by changing the idl extract fro the tlb, but failed to understand exactly how it's done, and what are the tools for the job.

Any suggestions how to set the enums easily as possible?

The code:

 public enum enResultCode : uint
{
    enRCNone = 0x00000000,
    enRCNotFound = 0x00000001,
    enRCFoundOnServer = 0x00000002,
    enRCFoundOnLocal = 0x00000003,
    enRCDatabaseError = 0x00000004,
    enRCAborted = 0xFFFFFFFF,
    enRCServerError = 0xFFFFFFFE,
    enRCLocalError = 0xFFFFFFFD
}

Shown in VB6 as:

enter image description here

instead of:

enResultCode.EnumItemName

1 Answer 1

2

I think you're correct the only way to do this is to modify the IDL yourself. I can tell you a little about how it's done...

  1. You run tlbexp.exe to create the tlb from your C# assembly.
  2. You run oleview.exe to open that tlb and inspect the IDL. You can save that IDL out to a file or copy/paste it.
  3. You edit the IDL to give it the enum item names you want.
  4. You run midl.exe to generate a tlb from your modified IDL.

That should be enough. Sorry I can't give you all the correct command line switches but I'm not on a Windows machine right now.

Sign up to request clarification or add additional context in comments.

2 Comments

This is backed up by this article
Thank you. I have some issues creating the tlb from idl. Will comment about it later (after I'll have the answers).

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.