Announcement

Collapse
No announcement yet.

Problem mit COM-Object !

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Problem mit COM-Object !

    Hallo,

    ich möchte einen COM-Client für eine CAD-Anwendung schreiben, um diese Anwendung zu steuern.
    Also habe ich wie im HB beschrieben eine neue Anwendung erstellt und dort die "geomedia.tlb" importiert.
    So weit so gut. Doch in der "GeoMedia_OCX.cpp" bzw "GeoMedia_OCX.h" stehen keine Co-Klassen. Beim öffnen der "geomedia.tlb" sah ich die Ursache, sämtliche Einträge(Schnittstellen und DispInterface) haben nicht das Flag CanCreate.
    Dann habe ich versucht die Anwendung so zu starten:
    <pre>
    Variant geom;
    geom = CreateOleObject("GeoMedia.Application");
    geom.Exec(Procedure("Visible") << true);
    </pre>
    das funktioniert auch, doch wie komme ich an den Pointer der Anwendung ?
    Denn ich will ja an die Funktionen von Geomedia.

    ... mmmm

    Mario

  • #2
    Hi,

    nach einer Nacht schlafen hatte ich die Lösung.<br>
    Ist eigendlich ganz einfach.:<br>
    in die *.h<br>
    <pre>
    class TGeomTest : public TForm
    {
    __published: // Von der IDE verwaltete Komponenten
    TButton *Geom_Open;
    TButton *Geom_Close;
    void __fastcall Geom_OpenClick(TObject *Sender);
    void __fastcall Geom_CloseClick(TObject *Sender);
    private: // Anwender-Deklarationen

    public: // Anwender-Deklarationen
    Variant Geom_Start;
    App *Geom_App; // Klasse ist vom Import der *.tlb
    __fastcall TGeomTest(TComponent* Owner);
    };
    </pre>
    ... und in die *.cpp
    <pre>
    //-------------------------------------------------------------------
    void __fastcall TGeomTest::Geom_OpenClick(TObject *Sender)
    {
    Geom_Start = CreateOleObject("GeoMedia.Application");
    Geom_Start.Exec(Procedure("Visible") << true);
    Geom_App = (App *) Geom_Start.VPointer;
    Application->BringToFront();
    }
    //-------------------------------------------------------------------
    void __fastcall TGeomTest::Geom_CloseClick(TObject *Sender)
    {
    Geom_App->Quit();
    Geom_Start = Unassigned;
    }
    //-------------------------------------------------------------------
    </pre&gt

    Comment

    Working...
    X