com - visual - vs6 installer



Entladen eines COM-Steuerelements beim Arbeiten in VB6 IDE (1)

Ich bin mir ziemlich sicher, dass es keine gute Möglichkeit gibt, VB6 dazu zu bringen, die Kontrolle zu entladen.

Hier ist was ich tue ... anstatt Visual C und Visual Basic nebeneinander laufen zu lassen, führen Sie VB6 unter VC aus:

  1. VC laden
  2. Öffnen Sie das Projekt mit Ihren COM-Objekten
  3. Bearbeiten, ändern usw.
  4. Legen Sie in VC die ausführbare Ausgabedatei auf VB6.EXE mit entsprechenden Befehlszeilenargumenten fest, um den VB6-Arbeitsbereich zu laden
  5. Jetzt drücken Sie einfach F5 um die VB6 IDE zu starten und Ihr VB6 Projekt zu laden
  6. Wenn Sie den COM-Code erneut ändern möchten, beenden Sie VB6.EXE, nehmen Sie Ihre Änderungen vor und drücken Sie erneut F5. Solange Sie Ihren Arbeitsbereich speichern, merkt sich VB6, welche Fenster Sie geöffnet haben und welche Projekteinstellungen Sie haben.

Vorteile dieser Methode:

  • Sie können Haltepunkte im COM-Objekt setzen und es mit einem vollständigen Quelldebugger debuggen
  • Sie können gleichzeitig in C und VB debuggen
  • Immer wenn VB6 läuft, hat es immer die neueste Version der COM-DLLs

Ein Teil meiner täglichen Arbeit ist die Wartung und Erweiterung von Legacy-VB6-Anwendungen. Eine allgemeine Engine ist in C / C ++ geschrieben und VB6 verwendet diese Funktionen, um die Leistung zu verbessern.

Wenn es um asynchrone Programmierung geht, ist eine C-Schnittstelle nicht genug und wir verlassen uns auf COM-Steuerungen, um Ereignisse auf VB6 auszulösen.

Mein Problem ist, dass, wenn ich das Steuerelement in VB6 registriere, VB dieses Steuerelement in Arbeitsspeicher lädt und es nicht entlädt, bis ich die VB6 IDE beende. Da das Steuerelement die ganze Zeit geladen wird, kann ich es nicht in VC6 neu kompilieren, da die DLL-Datei gesperrt ist.

Eine Lösung, die ich gefunden habe, ist nicht, das Steuerelement in VB zu aktivieren, sondern das CreateObject() mit dem vollständigen Namen meines Steuerelements zu verwenden. Das Problem ist dann, dass ich meine Steuerung als ein Objekt erklären muss, weil VB6 nichts von der Schnittstelle weiß, die ich benutze und ich keinen Zugang zu IntelliSense habe, was ein Schmerz ist.

Irgendeine Idee, wie ich VB6 anweisen kann, Kontrollen nach dem Beenden der Anwendung oder direkt in der IDE zu entladen?