Interfaceconnect calls Advice on the objects IConnectionPoint. I can't share Delphi code here but essentially what you do is:
Get IConnectionPointContainer (CPC) from IUnknown (ActiveXObject) : ActiveXObject.QueryInterface(IConnectionPointContainer, CPC); Get IConnectionPoint (ppcp) for the IID of interest (RIID) from IConnectionPointContainer : CPC.FindConnectionPoint(RIID, ppcp); Call Advice on IConnectionPoint (ppcp) with the sink interface you created : CP.Advise(unkSink, dwCookie); That's it! Keep hold of dwCookie as it is used to disconnect later on: CP.UnAdvise(dwCookie); Ludo -----Message d'origine----- De : fpc-pascal-boun...@lists.freepascal.org [mailto:fpc-pascal-boun...@lists.freepascal.org] De la part de Roberto Padovani Envoyé : mercredi 25 mai 2011 13:18 À : FPC-Pascal users discussions Objet : Re: RE : RE : RE : [fpc-pascal] support for using an activex 2011/5/24 Ludo Brands <ludo.bra...@free.fr>: > The following delphi articles should help creating an event sink: > > http://www.informit.com/articles/article.aspx?p=130494&seqNum=5 This > is an interesting one since it is written for Delphi 3-4 which missed > a lot of the automated COM handling. This is much closer to where fpc > is now. > > http://www.blong.com/Conferences/IConUK2000/DelphiMoreAutomation/More% > 20Auto > mation%20In%20Delphi.htm#HandcraftedEventSink > > A good intruduction to connectable objects: > http://www.gtro.com/delphi/comevents_e.php > Thanks a lot! I'm reading it all and writing some code. But in all of those docs there the "InterfaceConnect" routine is used....but I can't find it anywhere. Besides, is there something to convert the tlb to pascal? Or shall I do it manually? I might be wrong, but it seems to me that it should be possible to write a general TSimpleEventSink class which does most of all the COM work, and exposes a pascal-standard event management. The TSimpleEventSink class might have an Events property which is a dynamic array of TNotifyEvents; the client could resize it and link its event handlers. At the same time the TSimpleEventSink reacts to the server events by mapping the dispid's to the Events array index, up to its current maximum dimension. Well, I'm still quite confused.... besides the missing InterfaceConnect method, is there any freepascal example available? On the web I can only find delphi ones. Thanks, Roberto _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal _______________________________________________ fpc-pascal maillist - fpc-pascal@lists.freepascal.org http://lists.freepascal.org/mailman/listinfo/fpc-pascal