Hi Leute,
ich arbeite mich grade ein wenig in die automatisierung ein und habe mir dazu folgendes Tutorial
Ich habe mir eine Anwendung erstellt, darin dann ein neues Automatisierungsobjekt.
Anschließend eine zweite Client-Anwendung, das Automatisierungobjekt eingebunden und via createOleObjekt ein neues Objekt erzeugt.
Das klappt auch alles wunderbar, allerdings möchte ich mit getActiveOLEObjekt eine Instantz auf die laufende Anwendung haben.
Also muß ich ja den Server im ROT registtrieren - und hier ist mein Problem.
Ich zeige euch mal den Source vom meinem Automatiserungsobjekt:
Das Problem:
Tmyserver.Initialize und Tmyserver.Destroy werden nicht aufgeführt, wenn ich den Server starte (initialization aber schon..).
Seltsam:
Wenn ich aus einem Client via oleCreateObjekt das Programm öffne, wird Tmyserver.Initialize doch ausgeführt?!
Ich glaube ich habe da was grundsätzliches noch nicht gerafft, wäre super wenn mir da einer auf die Sprünge helfen kann
Vielen Dank!
ich arbeite mich grade ein wenig in die automatisierung ein und habe mir dazu folgendes Tutorial
Ich habe mir eine Anwendung erstellt, darin dann ein neues Automatisierungsobjekt.
Anschließend eine zweite Client-Anwendung, das Automatisierungobjekt eingebunden und via createOleObjekt ein neues Objekt erzeugt.
Das klappt auch alles wunderbar, allerdings möchte ich mit getActiveOLEObjekt eine Instantz auf die laufende Anwendung haben.
Also muß ich ja den Server im ROT registtrieren - und hier ist mein Problem.
Ich zeige euch mal den Source vom meinem Automatiserungsobjekt:
Code:
unit mycomserver; {$WARN SYMBOL_PLATFORM OFF} interface uses ComObj, ActiveX, server_TLB, StdVcl, dialogs; type Tmyserver = class(TAutoObject, Imyserver) private FROTCookie: Longint; public procedure Initialize; override; destructor Destroy; override; protected procedure hello; safecall; end; implementation uses ComServ; procedure Tmyserver.Initialize; begin inherited; //Register object in ROT showmessage('Why the init event doesnt fire?'); OleCheck(RegisterActiveObject(Self, CLASS_myserver, ActiveObject_Weak, FROTCookie)) end; destructor Tmyserver.Destroy; begin // unegister object in ROT showmessage('And destroy event also doesnt fire...'); OleCheck(RevokeActiveObject(FROTCookie, nil)); inherited; end; procedure Tmyserver.hello; begin showmessage('hello its me the comserver'); end; initialization showmessage('com server init works...'); TAutoObjectFactory.Create(ComServer, Tmyserver, Class_myserver, ciMultiInstance, tmApartment); end.
Das Problem:
Tmyserver.Initialize und Tmyserver.Destroy werden nicht aufgeführt, wenn ich den Server starte (initialization aber schon..).
Seltsam:
Wenn ich aus einem Client via oleCreateObjekt das Programm öffne, wird Tmyserver.Initialize doch ausgeführt?!
Ich glaube ich habe da was grundsätzliches noch nicht gerafft, wäre super wenn mir da einer auf die Sprünge helfen kann
Vielen Dank!