Filo Posted May 6, 2012 Share Posted May 6, 2012 Hallo, ich würde mich gerne in die Pluginerstellung für den DVBViewer einarbeiten (erst mal einfache Sachen) und mich langsam mit der Materie vertraut machen. Dazu hätte ich am Anfang ein paar Fragen. - Welche Entwicklungsumgebung wäre anzuraten (Freeware, wenn möglich) - Gibt es Beispielplugins (gab es meines Wissens, finde sie nur nicht mehr). - Gibt es weitere anzuratende Dokus darüber? Ich kann schon im Forum suchen, die Anfrage ist nur dass ich nichts übersehe und mich dann nicht dumm und dämlich (ohne "h") suche. Gruß Filo Quote Link to comment
Tjod Posted May 6, 2012 Share Posted May 6, 2012 Der DVBViewer hat zwei unterschiedliche Schnittellen. Die für die "echten Plugins" und das COM-Interface und noch ein paar Skripte über die man schon einiges machen kann. http://de.DVBViewer.tv/wiki/DVBViewer_VBScripte Zu Beispielen, da gibt es in Scripting Lounge / COM (de/en) und im Mitgliederbereich > Sources gibt es ein paar. Für konkretere hinweise müsstest du etwas genauer sagen was du vor hast. PS: Ich verschiebe das mal nach Scripting Lounge / COM (de/en) da passt das besser hin. Quote Link to comment
erwin Posted May 7, 2012 Share Posted May 7, 2012 (edited) Der DVBViewer hat zwei unterschiedliche Schnittellen. Die für die "echten Plugins" und das COM-Interface und noch ein paar Skripte über die man schon einiges machen kann. Ich kenn da noch eine (wenig/gar nicht dokumentierte) 3. Schnittstelle. Ich meine das IDVBViewerPlugin-Interface welches man samt der Funktion InitPlugin2() implementieren muss und das der DVDV sich dann durch Aufuf von InitPlugin2() verschafft. Durch reverse Engineering des zur Verfügung gestellten Beispielcodes (die einzige Dokumentationsquelle) hab ich den geforderten Aufbau von IDVBViewerPlugin herausgefunden. Grob gesagt gliedert der sich in zwei Teile: Einen zur Integration der eigenen Einstellungen in den allgemeinen Optionendialog. Und einen zweiten zur Programmierung des OSD. Die ganze Mühsal zur Nutzung dieser Schnittstelle kann mann hier nachverfolgen: http://www.DVBViewer.tv/forum/topic/30745-plugin-entwicklung-unerwuenscht/page__st__15 erwin Edited May 7, 2012 by erwin Quote Link to comment
mague Posted May 7, 2012 Share Posted May 7, 2012 Hallo, ich würde mich gerne in die Pluginerstellung für den DVBViewer einarbeiten (erst mal einfache Sachen) und mich langsam mit der Materie vertraut machen. Dazu hätte ich am Anfang ein paar Fragen. - Welche Entwicklungsumgebung wäre anzuraten (Freeware, wenn möglich) - Gibt es Beispielplugins (gab es meines Wissens, finde sie nur nicht mehr). - Gibt es weitere anzuratende Dokus darüber? Ich kann schon im Forum suchen, die Anfrage ist nur dass ich nichts übersehe und mich dann nicht dumm und dämlich (ohne "h") suche. Gruß Filo DVBViewer wurde mit Delphi entwickelt. Mit Delphi kommst du am schnellsten zu Ergebnissen. Es gibt Ansaetze in C. Ein super Fortschritt waere es auch wenn jemand die Interfaces in Lazarus (FreePascal) umsetzten koennte. Ich kann nicht viel dazu sagen da ich keine der Sprachen wirklich beherrsche. Suche im Forum nach myPrograms und myInternet. Die Sourcen von myPrograms zeigen eigentlich alles was noetig ist. Es gibt auch einen ganz guten Forumsbeitrag wo das Grundgeruest eines plugins gepostet wurde. Ich glaube der war von SnoopyDog. Die Doku zum COM interface ist eigentlich ausreichend und nur an zwei, drei Stellen falsch weil veraltet. Die Loesungen dazu findet man auch im Forum oder fragt halt. Ich wuerde immer erst mit VB Script testen um zu sehen ob die eigenen Wuensche realistisch umsetztbar sind bevor ich Zeit oder Geld investiere. Quote Link to comment
dgdg Posted May 7, 2012 Share Posted May 7, 2012 ich würde mich gerne in die Pluginerstellung für den DVBViewer einarbeiten (erst mal einfache Sachen) und mich langsam mit der Materie vertraut machen. Dazu hätte ich am Anfang ein paar Fragen. An dem Punkt stand ich auch schon zweimal. ;-) Hab's dann aber aufgegeben, weil das SDK und die Doku sehr Delphi-spezifisch sind. Wenn man dann keine zusätzlichen Erfahrungen mit der COM-Schnittstelle hat, ist man ziemlich aufgeschmissen. Die Leute, die sich mit COM auskennen, haben anscheinend wenig Probleme mit der Plugin-Schnittstelle. Aber da hier kaum jemand seinen Quellcode veröffentlicht, kann man auch nicht davon lernen und jeder beginnt wieder bei Null. Quote Link to comment
mague Posted May 7, 2012 Share Posted May 7, 2012 An dem Punkt stand ich auch schon zweimal. ;-) Hab's dann aber aufgegeben, weil das SDK und die Doku sehr Delphi-spezifisch sind. Wenn man dann keine zusätzlichen Erfahrungen mit der COM-Schnittstelle hat, ist man ziemlich aufgeschmissen. Die Leute, die sich mit COM auskennen, haben anscheinend wenig Probleme mit der Plugin-Schnittstelle. Aber da hier kaum jemand seinen Quellcode veröffentlicht, kann man auch nicht davon lernen und jeder beginnt wieder bei Null. COM kannst du wie Aufrufe von Funktionen in einer dll sehen. Das groesste Problem ist das Verstehen der Funktionen. Da ist wirklich einiges an ausprobieren noetig. Sourcen helfen da auch nicht. Und die Doku muesste massiv aufgeblaeht werden um alles detailiert zu beschreiben. Dann brauchts du halt viel Zeit zum Lesen. Mit einem Delphi hat man einen gewissen Vorteil weil selbst mein altes 7er Kompletierung hat. Man schreibt z.B. dvbbase. und am Punkt poppen die moeglichen Funktionen bzw. Prozeduren auf. Das hilft ungemein. Den Rest habe ich geloest, indem ich mir Ergebnisse als DataManager.Value's ausgeben lassen habe. Das ist am Anfang schon eine steile Lernkurve aber es ist machbar. Quote Link to comment
dbraner Posted May 8, 2012 Share Posted May 8, 2012 Mit einem Delphi hat man einen gewissen Vorteil weil selbst mein altes 7er Kompletierung hat. Man schreibt z.B. dvbbase. und am Punkt poppen die moeglichen Funktionen bzw. Prozeduren auf. Das hilft ungemein. Standardfunktion der meisten Entwicklungsumgebungen wie z.B. auch Visual Studio für C++ / C#. Ist also kein Grund, sich deshalb mit Delphi/Pascal zu quälen. m.E. würde es genügen, für Delphi, C++ und C# ein Grundgerüst für die einzelnen Plugin-Arten zu veröffentlichen. Es gibt hier im Forum bereits einige Ansätze (z.B. erwins Beispiel für ein Input-Plugin). Trotzdem ist es immer noch sehr viel Trial and Error. Quote Link to comment
erwin Posted May 8, 2012 Share Posted May 8, 2012 (edited) Hier ein Beispiel für C#! http://www.DVBViewer.tv/forum/topic/49371-hello-and-good-bye/ Es demonstriert - die Verwendung von DVBV-COM - die Verwendung von DVBV-Events Es ist eine Visual Studio Pro Solution sollte aber auch in die kostenfreie Express Version ladbar sein. Und hier nochmal Auszugsweise demonstriert wie einfach das Hinzufügen eines Ereignishandlers ist. Man gibt ein: m_events. dann erscheint dies nach auswahl eines Ereignisses (hier onDVBVClose) wird automatisch ergänzt: Jetzt TAB eingeben: und nochmal TAB erzeugt ein Handler template Nach Gusto mit Inhalt füllen. Et voila! erwin Edited May 8, 2012 by erwin Quote Link to comment
erwin Posted May 8, 2012 Share Posted May 8, 2012 Trotzdem ist es immer noch sehr viel Trial and Error. Exempli Gratia: In meinem obigen Beispielcode steht: m_dvbviewer.OSD.ShowYesNo( "", "DVBViewer Event", "Closing DVBViewer", "continue?", true ); Anstatt "continue?" wird aber "Fortfahren?" ausgegeben. Offenbar eine Suchen-und-Ersetzenoperation zur Language-Anpassung. Nützliches Feature, zweifellos. Aber ehrlich gesagt ich habs nirgends dokumentiert gesehen. Eben mal ZUFÄLLIG durch "trial" gelernt. erwin Quote Link to comment
nuts Posted May 8, 2012 Share Posted May 8, 2012 (edited) Welche Zeichen an die Sprache angepasst werden richtet sich nach der DVBV Sprachdatei. Ich musste für diese Erkentnis aber auch erstmal nachfragen. Ist aber doch ganz nützlich. Ich finde mit den COM Sachen und der Doku dazu kommt man ganz gut zurecht. Beispiele gibt es dafür hier im Forum für einige Sprachen. Das einzig problematische fand ich anfangs die Delphi spezifischen Datentypen (TDateTime usw.). Plugins finde ich wesentlich schwieriger. Die Doku ist recht dünn und Beispiele gibt es wenige. Da merke ich schon das ichs nicht gelernt habe. Edited May 8, 2012 by nuts Quote Link to comment
mague Posted May 8, 2012 Share Posted May 8, 2012 Plugins finde ich wesentlich schwieriger. Die Doku ist recht dünn und Beispiele gibt es wenige. Da merke ich schon das ichs nicht gelernt habe. Ein plugin tut nichts anderes. Was Erwin beschreibt ist was der DVB Spy tut. Man kann die Source des Spy umbauen zum plugin. Fuers OSD brauchst du nur den Query fosd.QueryInterface(IID_IOSDWindowManager, windowmanager); WindowManager.NewWindow(WINDOW_ID, 'myPrograms.xml', self, 0, '', '', '', PLUG_NAME, '', '', '', 0, true, punk); Dann hast du COM und ein OSD Fenster. Der Rest ist mehr oder weniger if-then, case und loops Und ja, man braucht halt die interfaces. 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.