COM Objekte importieren, wie?

Rund um die LCL und andere Komponenten
Antworten
Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

COM Objekte importieren, wie?

Beitrag von Leberecht »

Hallo,

kennt jemand irgentwelche Tutorials, wie ich unter Lazarus (win32) COM-Objekte einbinden und nutzen/ansprechen kann? Ich finde dazu irgentwie nichts.
Habe eine Fremdsoftware, welche sich über COM fersteuern ließe, und das würde ich gern tun.

Danke
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)

Benutzeravatar
theo
Beiträge: 10905
Registriert: Mo 11. Sep 2006, 19:01

Re: COM Objekte importieren, wie?

Beitrag von theo »


Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

Re: COM Objekte importieren, wie?

Beitrag von Leberecht »

Danke, hab das Paket runtergeladen und installiert. Allerdings habe ich bei der Nutzung einige Verständnisschwirigkeiten. Laut Anleitung auf
http://wiki.freepascal.org/LazActiveX
gehört zu einer korrekten Initialisierung eines COM-Objektes (nachdem die Typbibliothek mit "Import Type Library" importiert wurde) folgendes:
Beispiel:

var
oEBP:=CoEBPControl.Create();
ActiveXContainer1.ComServer:=oEBP;
ActiveXContainer1.Active:=true;

also, Objektvariable anlegen, Objekt erstellen, dem ActiveX-Container das erstellte Objekt als ComServer zuweisen und aktivieren. Bei mir funktioniert nur die
Objekterstellung, das Zuweisen und Aktivieren des ActiveX-Containers fürt bei mir jedesmal zu Zugriffsfehlern bedingt durch falsche Casts usw..

ABER:
Bei mir funktioniert alles OHNE den ActiveX-Container korrekt, ich brauche nur das Objekt mit Create anlegen und kann dann über die von diesem bereitgestellten Funktionen Daten auslesen und auch senden. Die ferngesteuerte .exe verhält sich korrekt. Wozu dann überhaupt das ActiveX-Objekt? Hätte ich das garnicht installieren brauchen? Kann mir das jemand erklären?
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)

Benutzeravatar
theo
Beiträge: 10905
Registriert: Mo 11. Sep 2006, 19:01

Re: COM Objekte importieren, wie?

Beitrag von theo »

Ich glaube die Dokumentation ist nicht ganz auf der Höhe.
Aber schön, wenn es bei dir nun klappt.

Patito
Beiträge: 203
Registriert: Di 22. Sep 2009, 13:08
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit

Re: COM Objekte importieren, wie?

Beitrag von Patito »

So ein ActiveXContainer ist doch normalerweise dazu da um ein ActiveX-Objekt grafisch anzuzeigen
(für eingebettete Mediaplayer, Web-Browser o.ä,)?!

Ein nicht-grafisches Objekt (z.B. eine Barcode-Reader-Schnittstelle) braucht ja kein Fenster.
Da braucht man dann auch keinen Container.

Wenn Zugriffsfehler kommen sind aber die Fehlermeldungen vom Container wohl nicht
ganz sauber ausprogrammiert.

Leberecht
Beiträge: 73
Registriert: Fr 28. Mai 2010, 08:39
OS, Lazarus, FPC: Win7 64bit, Lazarus 1.6.0 32bit (FPC 3.0.0)
CPU-Target: 32Bit
Wohnort: Heidelberg

Re: COM Objekte importieren, wie?

Beitrag von Leberecht »

Also meine Anwendung war ein Programm zum Simulieren einer Modelleisenbahn. Und diese .exe (die hab ich auch über "Import Type Library" importiert, worauf er mir eine unit mit allen Schnittstellen usw. generiert hat) hatte eine COM-Schnittstelle, um die Zugdaten auslesen/beeinflussen zu können. Es könnte sein, das diese Anwendung nicht eingebettet laufen kann, sondern nur als Hauptprogramm und es deswegen zu den Fehlern kam als ich den Container aktivieren wollte. Da wäre es gut gewesen, wenn die Dokumentation wenigstens ein Beispiel ohne ActiveX-Container und eingebettete Objekte gehabt hätte.
„Viel zu lernen du noch hast.“
(Yoda zu Dooku)

Antworten