![]() |
Verborgenes TLB-Interface definieren
Hallo
Wie kann ich über die TLB ein Interface definieren, welches in der DLL nicht sichtbar ist? Es geht darum, eine DLL als Schnittstelle zu definieren. Die DLL enthält ein Objekt mit einer Dispatch-Schnittstelle. Diese ist öffentlich und soll anderen Anwendungen zur Verfügung gestellt werden. Die DLL enthält ein 2. Objekt, welches ich nur von meiner Anwendung her mit Daten füttere. Dazu habe ich eine weitere Schnittstelle des Typs IUnknown definiert, welche allerdings verdeckt, d.h. von externen Nutzern der DLL nicht einsehbar sein soll. D.h. im Prinzip, jeder externe Nutzer kann die 2. Schnittstelle, wenn er weiss, wie sie lautet und wie sie benutzt wird, sonst soll sie verborgen sein. Ist das möglich und wie? Danke für Antworten Tom |
Re: Verborgenes TLB-Interface definieren
Du kannst AFAIK die TLBs auch per Hand bearbeiten. Da brauchst Du dann nur dieses zweite Interface aus dieser Definition entfernen. Da ich aber noch nicht genauer mit Interfaces gearbeitet habe, kann ich zur Vorgehensweise aber nichts Genaueres sagen.
|
Re: Verborgenes TLB-Interface definieren
Das versteh ich jetzt nicht so ganz.
Wenn doch das Interface weg ist, ist doch auch ein Zugriff über die Schnittstelle nicht mehr möglich. Oder funzt das mit einem private Interface? Tom Zitat:
|
Re: Verborgenes TLB-Interface definieren
AFAIK sind die TLBsnur dazu da, um die Interface-Struktur global bekannt zu geben, d.h. zu sagen, wie die Procedure-Tables und ähnliches aufgebaut sind. Wenn Du das selber für deine Klasse weißt, sollten sich keine Probleme für Dich ergeben. Wenn andere dieses Interface aber nicht kennen sollen, kannst Du dessen Definition weglassen und jeder, der nicht die Gesamtstruktur kennt, kann nicht darauf zugreifen.
Aber wie gesagt: Hab selber mit COM noch nicht großartig gearbeitet. |
Re: Verborgenes TLB-Interface definieren
Habe es mal probiert, aber irgendie geht es nicht. :(
Wenn ich das Interface aus der TLB entferne, meldet mir der TLB, eine CoClass müsse ein Interface besitzen. Das Problem ist, dass ich die entsprechende CoClass auch nicht sichtbar haben will. Also alles entfernen und in einer Private-Unit definiert. Beim starten des COM-Objekts erhalte ich nin allerdings die Exception 'Type Information Missing' :wall: Müssen CoClasses in der TLB sichtbar sein? Tom Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz