OLE-Objekt



  • Hallo !

    Ich möchte einen Terminal von einem anderen Hersteller in mein Programm einbinden. Dieser Anbieter liefert Zugriffs-Software (eine EXE in VB ?!?) mit. Hier ist ein Auszug aus der Beschreibung:

    [...]
    TermCOM ist ein Kommunikations-Objekt (andere Bezeichnung: Active-X/OLE Objekt) zur Anbindung des Terminals an Windows-Programme.
    [...]
    Das Kommunikations-Objekt wird als Out-Of-Process-Server registriert und steht dann der Anwendung zur Verfügung. Führen Sie das Programm TermCOM_COMOBJ.exe aus, dadurch wird das Objekt automatisch registriert und steht der Anwendung ab sofort zur Verfügung.
    [...]
    Das folgende Beispiel zeigt die Verwendung in Visual Basic (die Syntax andere Programmiersprachen muss entsprechend angepasst werden).
    Die Installation von TermCOM erfolgt über den Befehl
    AnwObj = CreateObject("Online.Applikation")

    Frage 1: Reicht es wirklich aus, einmalig die mitgelieferte EXE auszuführen, und dann kann man aus dem eigenen Programm auf das Terminal zugreifen, ohne noch irgendetwas einzubinden bzw. ist das der übliche Weg ? (Wäre ja echt einfach 🙂
    Frage 2: Wie lautet der entsprechende Befehl von CreateObject(...) in C++ ?

    Tschüss



  • Wahrscheinlich registriert sich die exe selber, d.h. wenn die Einträge für das Terminal-Objekt noch nicht in der Registry stehen, trägt es sich automatisch ein.

    Zu Frage1:
    Normal startet man den Out of Process-Server (die Exe) einmal mit dem Parameter /RegServer, wodurch er registriert wird.

    Zu Frage2:
    Der Code, um aus der ProgID ("Online.Applikation") ein Instanz des Objekts in C++ zu erstellen, sieht so aus:

    CLSID clsid;
    HRESULT hr = CLSIDFromProgID( L"Online.Applikation", &clsid);
    IUnknown* p;
    if (SUCCEEDED(hr))
    hr = ::CoCreateInstance( clsid, NULL, CLSCTX_SERVER, IID_IUnknown, (void**)&pUnk);

    Wie die Schnittstellen heissen und definiert sind, lässt Du am besten den Compiler machen, indem Du per import-Befehl die Typelib importierst.



  • Danke. Das hilft mir doch schon mal weiter. 🙂


Anmelden zum Antworten