ipforce Posted March 29, 2009 Share Posted March 29, 2009 Hallo, quäle mich seit gestern mit dem COM Interface rum. Zugriff au die Properties und Methoden per Invoke funktionieren, vom EPG bis Datamanger lese ich schon alles. Aber ich schaffe es nicht einen Event-Handler, z.B. procedure onOSDWindow(WindowID: Integer); in meine Applikation einzuhängen. CoInitialize( NULL ); GetActiveObject(..) QueryInterface(...) etc. läuft durch... ItemProperties für das Events Attribut (IDVBViewerEvents) können auch gelesen werden, aber wie gehts eigentlich weiter ? Wie muß der Eventhandler registriert werden ? Hab mal ein Interface beschrieben, wie das // Interface definition for IDVBViewerEvents // DIID_IDVBViewerEvents: TGUID = '{B397FB16-A027-4D5B-88EB-FD9A2AA28D92}'; extern "C" const GUID CLSID_DVBViewerEvents = { 0xB397FB16, 0xA027, 0x4D5B, { 0x88, 0xEB, 0xFD, 0x9A, 0x2A, 0xA2, 0x8D, 0x92 } }; interface IDVBViewerEvents : IUnknown { //Desired functionality for Component virtual void __stdcall OnChannelChange(int ChannelNr) = 0; virtual void __stdcall onRDS(const BSTR RDS) = 0; virtual void __stdcall onOSDWindow(int WindowID) = 0; virtual void __stdcall onDVBVClose() = 0; virtual void __stdcall onStartRecord(int ID) = 0; virtual void __stdcall onEndRecord() = 0; virtual void __stdcall onPlaybackstart() = 0; virtual void __stdcall OnPlaybackEnd() = 0; //virtual void __stdcall OnPlaystatechange(RendererType: TRendererTyp = 0; State: TPlaystates); dispid 209; virtual void __stdcall onAction(int ActionID) = 0; virtual void __stdcall onPlaylist(const BSTR Filename) = 0; virtual void __stdcall onAddRecord(int ID) = 0; //virtual void __stdcall onControlChange(WindowID: Integer; ControlID: Integer); dispid 213; virtual void __stdcall onSelectedItemChange() = 0; } ; und eine entsprechende Klasse davon abgeleitet, ist das der richtige Weg ? Meine Dummy-Handler werden allerdings laut Debugger nicht angesprungen. Hat jemand mal ein Stück Source, um zu zeigen wies geht ? MfG, Andreas Quote Link to comment
nuts Posted March 29, 2009 Share Posted March 29, 2009 würde mich auch interessieren! wenn du es geschafft hast bitte umbedingt posten. Quote Link to comment
dbraner Posted May 6, 2009 Share Posted May 6, 2009 Zum Thema COM-Events und C++ lest mal bitte diesen Thread, insbesondere die Posts von erwin. http://www.DVBViewer.info/forum/index.php?showtopic=33691 Damit gehts. Benötigt wird Visual Studio Express. Wird allerdings damit erkauft, dass das fertige Programm das .NET Framework benötigt. Trotzdem, ich bin happy. Quote Link to comment
c-o-m-m-a-n-d-e-r Posted May 7, 2009 Share Posted May 7, 2009 kann da nur zustimmen Es werden vom erwin beide Möglichkeiten schön erklärt (auch dbraner tut einiges dabei) und die Möglichkeiten mit dem DVBViewer zu spielen sind um einiges gestiegen !! Quote Link to comment
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.