AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Probleme mit TLBs und ActiveX

Ein Thema von Sherlock · begonnen am 9. Mai 2007 · letzter Beitrag vom 10. Mai 2007
Antwort Antwort
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.762 Beiträge
 
Delphi 11 Alexandria
 
#1

Probleme mit TLBs und ActiveX

  Alt 9. Mai 2007, 09:48
Hallo,

ich möchte eine ActiveX-DLL erzeugen, die eine Klasse liefert, deren Methoden Parameter besitzt, die in einem anderen ActiveX deklariert sind. Sprich ich will eine ActiveX erzeugen, das als Plugin von einem anderen ActiveX-Server verwendet werden kann. In VisualBasic ist das absolut kein Hexenwerk, aber in Delphi7 will das ums verrecken nicht klappen.

Ich habe eine TLB die die globalen Objekte liefert, die der ActiveX-Server zur Verfügung stellt. Darin ist zum Beispiel ein ILoginDispatch deklariert, daß ich als Typ für einen Parameter meines Plugins verwenden muss.

Delphi erlaubt bei der Erstellung der TLB meines Plugins nicht diesen Typ, sondern nur irgendwelche Standardtypen.
In VB sieht zum Beispiel eine Function OnLoad wie folgt aus (TLB definition nimmt mir Visual Studio komplett ab):
Code:
   Public Shadows Function OnLoad(ByRef lg As GlobalObject.Login) As Object //GlobalObject ist die Server-TLB, Login vom Typ
     MsgBox("User " & lg.username & " started PlugIn ( OnLoad ).")        // ILoginDispatch
          OnLoad = True
   End Function
In Delphi hab ich versucht mir in der TLB mit IUnknown zu behelfen
Delphi-Quellcode:
  IGMTComClass = interface(IDispatch)
    ['{F74B551E-7464-4427-8A8F-4899322FFFE1}']
    procedure DisplayMessage(const Text: WideString); safecall;
    function OnLoad(const lg: IUnknown): WordBool; safecall;
  end;
In meiner Implementierung hab ich dann folgendes versucht:
Delphi-Quellcode:
uses GlobalObject_TLB
.
.
function TGMTComClass.OnLoad(const lg: IUnknown): WordBool;
begin
  MeinForm.Label1.Caption:= string((lg as login).username);
  Result:=True;
end;
Ist das grundsätzlich falsch?

Viel wohler wäre mir, wenn ich in der TLB direkt auf ILoginDispatch als Paramter zugreifen könnte. Aber die TLB wehrt sich vehement gegen Änderungen, ich kann die uses-Klausel nicht erweitern, und demzufolge auch nicht die erforderliche Server-TLB einbinden. Das Ganze versuche ich jetzt schon immer wieder seit Wochen. Und langsam verzweifel ich an der Kiste. Warum geht das in VB so trivial einfach, aber in Delphi überhaupt nicht?

Ich habe beim Ausführen im PluginServer dann schließlich das Ergebnis, daß sobald ich aus meinem Server das Plugin verwenden will, nach dem erfolgreichen Laden und initialisieren des Plugins die Meldung kommt, die Klasse wäre nicht registriert. Ich vermute der Server will die Methode OnLoad ausführen, aber da kracht es dann halt.

Weiß hier jemand was dazu?

Vielen Dank,
Sherlock
Oliver
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#2

Re: Probleme mit TLBs und ActiveX

  Alt 9. Mai 2007, 16:54
Hallo!

Du kannst bei der Bearbeitung der TLB im Reiter "Verwendet" mit der rechten Maustaste klicken und dort "Alle Typbibliotheken anzeigen" auswählen. Dort kannst du dann die Abhängigkeit von deiner Server-TLB realisieren.

Cu,
Udontknow
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.762 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Probleme mit TLBs und ActiveX

  Alt 10. Mai 2007, 08:35
Das ist zu einfach...

Vielen Dank, das hat mein Problem gelöst.

Jetzt muss ich nur noch verstehen, warum es zwar kompiliert und richtig aussieht, aber trotzdem noch nicht vom Server eingebunden wird.

Sherlock
Oliver
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#4

Re: Probleme mit TLBs und ActiveX

  Alt 10. Mai 2007, 09:44
Aber die DLL ist per regsvr32 im System registriert, ja? Wie sieht denn das nun im Server aus? Der ruft CreateComObject mit der korrekten GUID auf?

Cu,
Udontknow
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.762 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Probleme mit TLBs und ActiveX

  Alt 10. Mai 2007, 09:54
Ah, ich vergaß vielleicht zu erwähnen, daß mein Plugin vom Server gestartet wird, aber offenbar nicht korrekt mit ihm kommunizieren kann. Der Aufruf müsste also stimmen.

Sherlock
Oliver
  Mit Zitat antworten Zitat
Udontknow

Registriert seit: 17. Jun 2002
223 Beiträge
 
#6

Re: Probleme mit TLBs und ActiveX

  Alt 10. Mai 2007, 10:05
Der Server wurde nicht in Delphi geschrieben? Kannst du den nicht mal debuggen? Zur Not könnte man ja sogar nebenher Delphi offenlassen, um das Plugin zu debuggen ("Mit Prozess verbinden").

Ich fürchte, ich bin da mit meinem Latein am Ende, mit der IDispatch-Geschichte habe ich mich nie direkt beschäftigt...

Cu,
Udontknow
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.762 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Probleme mit TLBs und ActiveX

  Alt 10. Mai 2007, 10:23
Der Server ist leider nicht mit Delphi geschrieben. Ich hab den Server auf einer VMWare... da müsste ich Delphi reininstallieren um zu debuggen...wenn nichts sonst hilft, werde ich das wohl tun müssen

Danke für die Hilfe bisher

Sherlock
Oliver
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:05 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