Jump to content

Plugin erstellen


Recommended Posts

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

Link to comment

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.

Link to comment

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 by erwin
Link to comment

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.

Link to comment

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.

Link to comment

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.

Link to comment

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.

Link to comment

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

 

post-2941-0-39226800-1336456507_thumb.png

 

nach auswahl eines Ereignisses (hier onDVBVClose) wird automatisch ergänzt:

 

post-2941-0-00862500-1336456603_thumb.png

 

Jetzt TAB eingeben:

 

post-2941-0-99275200-1336456648_thumb.png

 

 

und nochmal TAB

 

erzeugt ein Handler template

 

post-2941-0-86443800-1336456744_thumb.png

 

Nach Gusto mit Inhalt füllen. Et voila!

 

erwin

Edited by erwin
Link to comment

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

Link to comment

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. :bye:

 

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 by nuts
Link to comment

 

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.

Link to comment

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...