AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Zusammenhang: ActiveX, Type Library und COM
Thema durchsuchen
Ansicht
Themen-Optionen

Zusammenhang: ActiveX, Type Library und COM

Ein Thema von Luckie · begonnen am 15. Okt 2007 · letzter Beitrag vom 17. Aug 2010
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Zusammenhang: ActiveX, Type Library und COM

  Alt 15. Okt 2007, 09:06
Hallo,
ich bräuchte mal eine kurze Aufklärung, wie die im Titel genannten Technologien zusammenhängen bzw. was sie überhaupt sind und wie sie funktionieren. Eine kurze Erklärung zu den Begriffen würde mir zum Einstieg und Verständnis schon mal sehr helfen. Weiterführende Links wären dann auch nicht schlecht.

Hintergrund ist der, dass ich hier ein Skining Engine habe, der seine Funktionalität über eine ActiveX-DLL / -Kontrol zur Verfügung stellt. In der Hilfe dazu steht, dass man dazu die Type Library importieren muss, um die Funktionalität nutzen zu können. jetzt wollte ich mal wissen, wie das zusammenhängt und genau funktioniert.

Danke schon mal für eure Mühe im Voraus.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#2

Re: Zusammenhang: ActiveX, Type Library und COM

  Alt 15. Okt 2007, 11:49
Also ich will mal zusammenfassen, was ich jetzt herausbekommen habe: ActiveX ist wohl eine Erweiterung von COM. Und eine Type Library veröffentlicht das Interface des COM-Objectes. OK, so weit, so gut.

Aber eins hab eich nicht verstanden: Ein Interface ist eine abstrakte Klasse mit virtuellen Methoden. Ja aber wo wird dann die eigentliche Funktionalität implementiert? Zum Beispiel bei diesem Skining Engine, den ich ansprach.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

Registriert seit: 3. Sep 2004
4.629 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#3

Re: Zusammenhang: ActiveX, Type Library und COM

  Alt 15. Okt 2007, 11:56
Ich denke mal in der .OCX Datei, welche ja die ActiveX Library darstellt. Das Interface dient dort sozusagen wie der Name schon sagt als Schnittstelle.

[Vermutungen]
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#4

Re: Zusammenhang: ActiveX, Type Library und COM

  Alt 15. Okt 2007, 12:02
Das vermute ich auch mal. Eine *.ocx ist doch eigentlich nur ne spezielle DLL.
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#5

Re: Zusammenhang: ActiveX, Type Library und COM

  Alt 15. Okt 2007, 12:09
Hat da jemand mal etwas Beispielcode zur Hand, damit ich mir das mal angucken kann?

Dieser Skinning Engine liefert keine *.ocx aus sondern nur eine DLL-Datei.
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Progman

Registriert seit: 31. Aug 2007
Ort: 99974 MHL
695 Beiträge
 
Delphi 10.1 Berlin Starter
 
#6

Re: Zusammenhang: ActiveX, Type Library und COM

  Alt 15. Okt 2007, 12:21
Da kann ich leider nicht helfen. Habe mich noch nie mit der Thematik befasst.
Wir hatten mal einen Studenten, der nebenher gelegentlich für unsere Firma geproggt hat, und der hat selbst *.ocx geschrieben, sogar mit Delphi. Hab mich damals noch geärgert, dass ich die Lic-Datei von ihm überall einbinden musste, weil er den Source für das OCX nicht rausgerückt hat
Karl-Heinz
Populanten von Domizilen mit fragiler, transparenter Aussenstruktur sollten sich von der Translation von gegen Deformierung resistenter Materie distanzieren!
(Wer im Glashaus sitzt sollte nicht mit Steinen werfen)
  Mit Zitat antworten Zitat
s-off
(Gast)

n/a Beiträge
 
#7

Re: Zusammenhang: ActiveX, Type Library und COM

  Alt 15. Okt 2007, 12:30
Die eigentliche Funktionalität liegt in einer DLL oder einer OCX-Datei. Die Typelibrary stellt die Schnittstelle dar.
Du kannst Dir, wenn Du Typbibliotheken importierst, entsprechende Wrapper aus der DLL bzw. der OCX-Datei generieren lassen, die die Schnittstelle bilden. Darin siehst Du jetzt die entsprechenden Interfaces.
Im Header steht zusätzlich, aus welcher Typbibliothek der Wrapper erzeugt wurde.

Importiere Dir doch einfach mal eine Typbibliothek, dann siehst Du es.

Beispiel:
Zitat:
unit AcroPDFLib_TLB;
// Typbib: C:\Programme\Adobe\Acrobat 7.0\ActiveX\AcroPDF.dll (1)
// LIBID: {05BFD3F1-6319-4F30-B752-C7A22889BCC4}
// LCID: 0
// Hilfedatei:
// Hilfe-String: Adobe Acrobat 7.0 Browser Control Type Library 1.0
oder
Zitat:
unit CERTWIZLib_TLB;

// Typbib: C:\WINDOWS\system32\inetsrv\certwiz.ocx (1)
// LIBID: {D4BE862F-0C85-11D2-91B1-00C04F8C8761}
// LCID: 0
// Hilfedatei: C:\WINDOWS\system32\inetsrv\CertWiz.hlp
// Hilfe-String: CertWiz ActiveX Control module
Die Entwickler Deiner Skinning-Komponente haben sich halt für die DLL entschieden.
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#8

Re: Zusammenhang: ActiveX, Type Library und COM

  Alt 15. Okt 2007, 12:49
Gut soweit hab eich das auch verstanden. Nur wenn ich lesen
Zitat:
Ein Interface ist eine abstrakte Klasse mit virtuellen Methoden.
, dann sind die Methoden in der DLL impelmentiert und das Interafce auch und die TLB ist dann eine Wrapper für das Interface, damit ich es in Delphi nutzen kann?

Machen wir es doch mal ganz einfach: Ich will einen COM-Server, der mir zwei Zahlen addiert. Wie sähe dass dann aus?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Dezipaitor

Registriert seit: 14. Apr 2003
Ort: Stuttgart
1.701 Beiträge
 
Delphi 7 Professional
 
#9

Re: Zusammenhang: ActiveX, Type Library und COM

  Alt 15. Okt 2007, 18:19
Zitat:
Eine Typebibliothek ist eine Binärdatei, die in einem MS spezifischen Format COM-Klassen und -Schnittstellen beschreibt
(Peter Loos GoTo COM Addion-Wesley 2001 Seite 247)

Das Buch ist für den Einstieg meiner Meinung nach ziemlich gut, wenn auch für C++. Ich habs auch nur für ein paar Euros bekommen. Das einzige COM Buch für Delphi gibts von Andreas Kosch.

Ich habe mich jetzt auch nicht so für COM unter Delphi eingearbeitet, daher kann ich nicht 100% Auskunft geben.

Man muss für COM Routinen, die OutofProcess laufen - also einen eigenen Prozess besitzen - eine Schnittstellensprache verwenden, die IDL (Interface Definition Language). Sie wird in dem MS Format TLB gespeichert. In Delphi erstellt man dazu eine "Typbibliothek" und fügt dort neue Schnittstellen ein. Diese wird in der IDL Sprache gespeichert.
Das muss so gemacht werden, weil jeder andere Sprache diesen COM-Server ansteuern könnte - also nicht nur Delphi. Zudem müssene Parameter und Rückgabewert von einem Prozess in den COM-Prozess serialisiert (to marshall) werden. Es ist daher nicht möglich, beliebige Datentypen als Parameter zu verwenden. COM spezifiziert dazu seine eigenen Datentypen (BSTR) und andere müssen durch eine eigene Marshall-Implementation abgedeckt werden.

Wenn man eine Typbibliothek erstellt hat, erstellt man darin ein COM-Objekt und implementiert es auch gleich. Also zuerst die abstrakten Methoden einfügen, dann das Interface ableitung und die Methoden implementieren. Mit Delphi und einem neuen COM-Objekt wird das schnell gemacht (wenn man die umständliche Erstellung der Interfacemethoden im TLB-Editor ignoriert).
Delphi erstellt nicht nur ein COM-Interface sondern auch gleich eine Implementation und auch eine Registration für das ComObjekt.
Die DLL wird mit regsvr32 <dll> registriert und mit regsvr32 /u <dll> entfernt. Die Exe kann man mit Parameter steuern.
In dem TLB Editor kann man dasselbe übrigens per Button machen. Im Quelltext macht das CoRegisterClassObject und CoRevokeClassObject. Habs aber nie verwendet.
Wichtig bei der ganzen Sache ist eben die Registrierung in der Registry.

Man kann mit der Hilfe der TLB Datei oder der IDL Interfacedeklarationen für beliebige Sprachen generieren.
Wir können dann mit CoCreateInstance das registrierte COM-Interface anfordern und verwenden. Das geht übrigens auch über ein Netzwerk.

So ich hoffe mal ich hab nicht völligen Blödsinn geredet
Christian
Windows, Tokens, Access Control List, Dateisicherheit, Desktop, Vista Elevation?
Goto: JEDI API LIB & Windows Security Code Library (JWSCL)
  Mit Zitat antworten Zitat
Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#10

Re: Zusammenhang: ActiveX, Type Library und COM

  Alt 16. Okt 2007, 08:36
danke, das warne doch schon mal ein paar mehr Informationen. Kennt jemand ein entsprechendes Tutorial für Delphi?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:14 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz