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

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

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

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

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

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

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
37
0
2 801
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

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

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

Это очень умно, я постараюсь это сделать. Теперь мне интересно, можно ли объединить мою старую учетную запись на основе файлов cookie с моей новой учетной записью на основе OpenId, чтобы я мог отметить этот ответ как ответ ...

Vincent Robert 10.09.2008 15:21

Это также работает с другими IDE, кроме VB. Я успешно сделал это с помощью Delphi / VB6.

Daniel Rikowski 05.07.2009 00:24

Другие вопросы по теме