Сведения о вопросе

Ayrat

16:03, 1st July, 2020

Теги

com   vb6    

Выгрузка элемента управления COM при работе в VB6 IDE

Просмотров: 544   Ответов: 1

Частью моей повседневной работы является поддержание и расширение устаревших приложений VB6. Общий движок написан в C/C++ и VB6 использует эти функции для повышения производительности.

Когда дело доходит до асинхронного программирования, интерфейса C недостаточно, и мы полагаемся на элементы управления COM для запуска событий в VB6.

Моя проблема заключается в том, что когда я регистрирую элемент управления в VB6, VB загружает этот элемент управления в память и не выгружает его, пока я не выйду из VB6 IDE. Поскольку элемент управления загружается все время, я не могу перекомпилировать его в VC6, потому что файл DLL заблокирован.

Решение, которое я нашел, - это не включить элемент управления в VB, а использовать CreateObject() с полным именем моего элемента управления. Проблема в том, что я должен объявить свой элемент управления как объект, потому что VB6 ничего не знает о интерфейсе, который я использую, и у меня нет доступа к IntelliSense, что является болью.

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



  Сведения об ответе

ЯЯ__4

18:03, 1st July, 2020

Я почти уверен, что нет хорошего способа заставить VB6 разгрузить контроль.

Вот что я делаю... вместо запуска Visual C и Visual Basic side-by-side, запустите VB6 под VC :

  1. Нагрузка до VC
  2. Откройте проект, содержащий ваши COM объекта
  3. Редактировать, изменять и т.д.
  4. В VC задайте выходной исполняемый файл VB6.EXE с соответствующими аргументами командной строки для загрузки рабочей области VB6
  5. Теперь просто нажмите F5, чтобы запустить VB6 IDE и загрузить свой VB6 проект
  6. Если вы хотите снова изменить код COM, выйдите из VB6.EXE, внесите изменения и снова нажмите клавишу F5. Пока вы сохраняете свое рабочее пространство VB6 будет помнить, что windows у вас было открыто и все настройки вашего проекта.

Преимущества этого метода:

  • Вы можете установить точки останова в объекте COM и отладить его с помощью полного исходного отладчика
  • Вы можете счастливо отлаживать в C и VB одновременно
  • Всякий раз, когда VB6 работает, он всегда имеет последнюю версию COM DLLs


Ответить на вопрос

Чтобы ответить на вопрос вам нужно войти в систему или зарегистрироваться