C # Com Enum и VB6 - PullRequest
       61

C # Com Enum и VB6

3 голосов
/ 14 сентября 2011

Привет, я создал C # Exe Com Server и передал его из приложения VB6.Проблема заключается в том, что все перечисления отображаются в приложении vb со «странным именем»: EnumName_EnumeItem, а затем именуется кодом VB6 как EnumName.EnumItem.

Код приложения VB6 не может быть изменен.Удивляясь, я увидел, что могу изменить это определение, изменив извлечение idl из tlb, но не смог точно понять, как это делается, и каковы инструменты для работы.

Любые предложения, как легко установить перечислениянасколько это возможно?

Код:

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

Отображается в VB6 как:

enter image description here

вместо:

enResultCode.EnumItemName

1 Ответ

2 голосов
/ 14 сентября 2011

Я думаю, что вы правы, единственный способ сделать это - изменить IDL самостоятельно. Я могу немного рассказать о том, как это делается ...

  1. Вы запускаете tlbexp.exe для создания tlb из вашей сборки C #.
  2. Вы запускаете oleview.exe, чтобы открыть этот файл и проверить IDL. Вы можете сохранить этот IDL в файл или скопировать / вставить его.
  3. Вы редактируете IDL, чтобы присвоить ему требуемые имена перечислений.
  4. Вы запускаете midl.exe для создания tlb из вашего измененного IDL.

Этого должно быть достаточно. Извините, я не могу дать вам все правильные ключи командной строки, но я сейчас не на Windows-машине.

...