Einzelnen Beitrag anzeigen

megaplage

Registriert seit: 27. Jan 2007
8 Beiträge
 
Delphi 2005 Professional
 
#3

Re: Problem mit COM Event EventSinkImp

  Alt 27. Jan 2007, 10:41
Vielen Dank, aber daran liegt es nicht. Habe D2005 verwendet.

Hier mal ein Beispiel meiner Versuche mit dem Ereignis SessionLogout

aus der TLB:

Delphi-Quellcode:
_CallbackSessionLogout = interface;
_CallbackSessionLogoutDisp = dispinterface;
ISessionLogoutSubscriptionCallbackEvents = dispinterface

  _CallbackSessionLogout = interface(IDispatch)
    ['{C5F3FBC2-5ACE-37C2-A400-B146B40B9656}']
  end;

  _CallbackSessionLogoutDisp = dispinterface
    ['{C5F3FBC2-5ACE-37C2-A400-B146B40B9656}']
  end;

  ISessionLogoutSubscriptionCallbackEvents = dispinterface
    ['{D99CA617-21FD-345D-9936-C23238B7AB4F}']
    procedure OnLogout; dispid 1610743808; !!! diese Zeile fehlt in der unit vom PASTLWTR : 1.2 ???
  end;

  _SessionLogoutSubscription = interface(IDispatch)
    ['{8B4C37BD-43ED-3215-8259-968FD8102B81}']
    function Get_ToString: WideString; safecall;
    function Equals(obj: OleVariant): WordBool; safecall;
    function GetHashCode: Integer; safecall;
    function GetType: _Type; safecall;
    procedure add_OnLogout(const value: _CallbackSessionLogout); safecall;
    procedure remove_OnLogout(const value: _CallbackSessionLogout); safecall;
    property ToString: WideString read Get_ToString;
  end;

  _SessionLogoutSubscriptionDisp = dispinterface
    ['{8B4C37BD-43ED-3215-8259-968FD8102B81}']
    property ToString: WideString readonly dispid 0;
    function Equals(obj: OleVariant): WordBool; dispid 1610743809;
    function GetHashCode: Integer; dispid 1610743810;
    function GetType: _Type; dispid 1610743811;
    procedure add_OnLogout(const value: _CallbackSessionLogout); dispid 1610743812;
    procedure remove_OnLogout(const value: _CallbackSessionLogout); dispid 1610743813;
  end;

  CoCallbackSessionLogout = class
    class function Create: _CallbackSessionLogout;
    class function CreateRemote(const MachineName: string): _CallbackSessionLogout;
  end;
1. Versuch : Verwendung der von EventSinkImp generierten Event-Wrapper

Er erzeugt eine Klasse TCC_APIISessionLogoutSubscriptionCallbackEvents, die habe ich so bemüht wie es in der Hilfe gesagt wird -> Interface wird connected aber wenn es zum Ereignis kommen soll keine Reaktion.

Delphi-Quellcode:
te:=session.GetSessionLogoutSubscription;
test:=TCC_APIISessionLogoutSubscriptionCallbackEvents.Create(self);
test.OnLogout:=oncclogout;
test.Connect(te);

2. Versuch : direkte Programmierung wie bei http://www.techvanguards.com/ beschrieben

Geht teilweise aber wenn es interessant wird können Klassen nicht gecastet werden oder Objekt nicht registriert und so Sachen

Ich vermute ja dass ich irgendwie die Methode add_OnLogout(const value: _CallbackSessionLogout); verwenden muss aber das endet mit besagten Fehlern

So, wenn jemand durch das Thema ist sollte er mit diesen Informationen zurechtkommen - lt. den Angaben diverser Delphi COM Seiten ?!
  Mit Zitat antworten Zitat