Einbinden einer OCX in VB.NET

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 7 Antworten in diesem Thema. Der letzte Beitrag () ist von Grüter.

    Einbinden einer OCX in VB.NET

    Hallo Profis

    Ich versuche schon seit Stunden, das VB6-ActiveX-Control MSCAL.OCX in mein neues Projekt einzubinden. Nach Internet-Recherchen müsste das nicht so schwierig sein, vermutlich scheitere ich an einem Detail. Hier folgt, wie ich die OCX einbinden will (habe Win7 64bit):

    1. MSCAL.OCX in C:\Windows\SysWOW64 kopiert und mit C:\Windows\SysWOW64\regsvr32 registriert -> Erfolgsmeldung. Ein altes VB6-Programm, welches das Kalender-Control gebraucht, funktioniert danach fehlerfrei. Allerdings ergibt z.B. der Befehl "C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin\x64\AxImp.exe C:\Windows\SysWOW64\MSCAL.OCX" die Fehlermeldung "Did not find a registered ActiveX control in 'C:\Windows\SysWOW64\MSCAL.OCX' ".

    2. In VS 2012 in Projekteigenschaften -> Verweise -> Hinzufügen... -> Durchsuchen... geklickt und C:\Windows\SysWOW64\MSCAL.OCX ausgewählt. "Microsoft Calendar Control 10.0" vom Typ COM wird in der Liste der Verweise angezeigt, es wird im VS-Projektordner die Datei "...\obj\Debug\Interop.MSACAL.dll" erzeugt.

    3. Nach Internetquellen müsste man jetzt das neue Control im Werkzeugkasten von VisualStudio finden. Ich entdecke jedoch nichts. Wo genau müsste das aufgelistet sein?

    Kann VS 2012 überhaupt dieses alte OCX noch einbinden?

    Für jeden Tipp schon jetzt ein Danke!

    Bernhard

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Grüter“ ()

    Grüter schrieb:

    Did not find a registered ActiveX control
    Sieh Dir mal den Prozessor-Typ in Deinem Projekt an: x86 oder x64. AnyCPU darfst Du da nicht nehmen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo Rod

    Hab's jetzt mit x86 oder x64 versucht, sehe aber immer noch kein (neues) Kalender-Control im Werkzeugkasten. Ist denn das in Post #1 genannte Vorgehen überhaupt richtig? Und in welcher Kategorie müsste das Control im Werkzeugkasten erscheinen ("Allgemeine Steuerelemente", "Allgemein" oder eine neue eigene Kategorie)?

    Danke fürs Mitdenken, Bernhard

    @Counterbug: Da hast du mich falsch verstanden. Ich meine OCX, du OCR. Ein altes VB6-Steuerelement möchte ich deshalb einbauen, weil das VB.NET-eigene Kalendersteuerelement nicht konfigurierbar ist (siehe mein gestriges Posting "Control 'MonthCalendar': Eigenschaften funkionieren nicht").

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Grüter“ ()

    Hallo fichz

    Bingo, das war der entscheidende Tipp für mich. So geht's - zumindest theoretisch. In der Praxis scheitert's daran, dass MSCAL.OCX definitiv zu alt und deshalb inkompatibel ist (Fehlermeldung "Der Wert eines Int16 ist zu gross"). Aber für andere (jüngere) OCXe konnte ich mit dieser Methode auf deren Steuerelemente zugreifen.

    Danke, Bernhard