Announcement

Collapse
No announcement yet.

Einfaches automatisierungsobjekt

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Einfaches automatisierungsobjekt

    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:

    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!
Working...
X