hackbart Posted June 3, 2007 Posted June 3, 2007 Okay, since the myinternet plugin did not found persons interested in updating the code i decided to finish the second example. This plugin shows how to: 1. Load a XML Page 2. Hooks into the Options Dialog 3. Deals with Lists and Thumbnails. The idea is to offer a simple way to add own applications into the osd. The only thing which is missing are the functions behind the OSD Green/Yellow/Red/Blue Button - especially since i have no idea what to implement behind Since i use a few newer features of the COM interface, please use it only with the current beta version. Christian PS: This time i also added a binary - in order to avoid the problems with missing classes myprograms.zip Quote
Tjod Posted June 3, 2007 Posted June 3, 2007 How I have to wright the applications in the myprograms.ini? Quote
Lars_MQ Posted June 3, 2007 Posted June 3, 2007 Take a look at the DVBViewer Options dialog. It should be the very last entry. Quote
Tjod Posted June 3, 2007 Posted June 3, 2007 Thanks i did not know way did not found it. 2. Hooks into the Options Dialog Quote
dharry Posted June 15, 2007 Posted June 15, 2007 Hello, If i click the MyPrograms Entry in the Options Dialog the program close its self everytime. Have someone an idea whats wrong? Sorry for my bad english. Quote
klausb Posted July 3, 2007 Posted July 3, 2007 Is there any free Delphi IDE/Compiler available? I know CodeGear, but that's not free. Regards, klaus. Quote
ZappoB Posted November 9, 2008 Posted November 9, 2008 Ich habe das Plugin gerade im Test und habe zwei Probleme, bzw. Fragen: 1. Die Reaktionszeit auf Tastendrücke (von Listeintrag zu Listeintrag) liegt bei mir bei ca. 2 Sekunden - ist das normal? 2. Nach dem Aufruf eines Programms wird im DVBViewer kein TV-Programm mehr angezeigt, ich muss erst wieder einen Sender wählen. Gibt es eine Möglichkeit, dass der letzte Sender wieder angezeigt wird? Quote
klausb Posted December 1, 2008 Posted December 1, 2008 @ZappoB, hast Du den plugin selber nochmal übersetzt? Wenn ja, mit welchen Dev-Tool? Ich habe gerade das Problem, dass bei mir nie das InitPlugin2 angesprungen wird. Gruss, klaus. Quote
ZappoB Posted December 1, 2008 Posted December 1, 2008 Ich verwende das fertig übersetzte Plugin. Quote
DerThommy Posted September 11, 2009 Posted September 11, 2009 muss das Thema nochmal rausholen....und zwar habe ich bei mir auch das Problem, dass ich nachdem schließen des geöffneten Programms, den zuvor eingestellten TV Sender neu einstellen muss. Gibt es hierfür shcon eine Lösung? Ansonsten ist das PlugIn echt super!!! Quote
EdVonSchleck Posted March 29, 2010 Posted March 29, 2010 hallo, wie & wo muss ich etwas ändern, um im osd menü den eintrag "myprograms" zu ändern, z.b. in music videos ! also ein reines umbenennen ! danke & gruss Quote
Tjod Posted March 29, 2010 Posted March 29, 2010 Das geht über die Sprachdatei http://www.DVBViewer.info/forum/index.php?showtopic=39549 Quote
LonelyPixel Posted April 4, 2010 Posted April 4, 2010 Plugins in DVBViewer – Eine erste Analyse Ich schau grade, dass ich irgendwie verstehe, wie Plugins in DVBViewer funktionieren. Ich habe momentan folgende Ressourcen: * Die COM-Dokumentation (CHM-Datei, Version 1.3, veraltet) * Die SDK-Dokumentation (CHM-Datei, enthält außer Funktionssignaturen fast keine Informationen) * Das Beispiel-Plugin MyPrograms Viel mehr gibt es vermutlich auch nicht, so dass ich mit dem zurecht kommen muss. Die COM-Doku ist glaube ich weniger nützlich zur Plugin-Entwicklung. Die SDK-Doku nennt eine handvoll Funktionssignaturen, die ein Plugin bestimmten Typs wohl veröffentlichen muss. Da diese Datei keinerlei Architekturinformationen enthält, rate ich einfach mal, dass ein Plugin eine DLL ist, die die benannten Funktionen exportieren muss. Die DLL wird dann von DVBViewer geladen (LoadLibrary) und die Funktionen werden aufgerufen (GetProcAddress). Wo hier der eigentliche Plugin-Code versteckt ist, geht aus der Beschreibung nicht hervor. Das MyPrograms-Plugin exportiert ein paar der in der SDK-Doku benannten Funktionen. Zusätzlich exportiert es eine undokumentierte Funktion "InitPlugin2 : IDVBViewerPlugin", die die Variable "myplug" zurückgibt, deren Definition ich nicht finden konnte. Ist die undefinierte Methode "Create" der Konstruktor eines Typs? Ich kenne mich mit den Erweiterungen von Delphi gegenüber Pascal nicht aus und habe auch keinen Compiler, um es auszuprobieren. Die Sprache ist mir irgendwie suspekt, sieht nicht sehr objektorientiert aus, erinnert alles an die records aus prozedural organisiertem Pascal. Ach ja, Groß-/Kleinschreibung wird in Delphi auch nicht beachtet, oder? Ansonsten hat DVBViewer jetzt vermutlich zu einem bestimmten Zeitpunkt eine Instanz des im Plugin definierten Typs TBasePlugin, der durch eine Vererbungshierarchie letztlich von TBaseDVBViewerPlugin ableitet. Diese Klasse bietet u. a. die Methode QueryInterface an, die die nicht definierte Funktion GetInterface aufruft und deren Rückgabewert weiterreicht. Es sind in MyPrograms etliche Schnittstellen definiert, zu denen auch eine GUID angegeben ist. Die GUIDs sind nicht in der Windows-Registry zu finden. Vermutlich sind dieselben Schnittstellen auch im DVBViewer definiert, so dass der gezielt Schnittstellen vom Plugin abfragen kann. Das sieht alles sehr nach COM aus, als wäre ein Plugin eigentlich eine COM-Klasse, die einige (DVBViewer bekannte) Schnittstellen implementiert, deren Methoden zu bestimmten Anlässen aufgerufen werden. Ist es nun tatsächlich COM-basiert oder sieht das nur so aus, ist nicht binärkompatibel und kann ich die üblichen COM-Mechanismen, die auch von anderen Programmiersprachen bereitgestellt werden, hier komplett vergessen? Ich habe mal ansatzweise ein paar der Schnittstellen in C# übersetzt und eine Basisklasse entworfen, die ein paar Schnittstellen implementiert. Momentan fehlen noch die von der DLL zu exportierenden Funktionen. Aber mal angenommen, es ist COM, was passiert eigentlich, wenn die Schnittstellen falsch übersetzt wurden? Bekomme ich eine hübsche Fehlermeldung mit Stacktrace und Begründung? Oder springt mir DVBViewer dann bei einem Methodenaufruf auch einfach nur in Einzelteilen entgegen? Quote
LonelyPixel Posted April 16, 2010 Posted April 16, 2010 If i click the MyPrograms Entry in the Options Dialog the program close its self everytime. Have someone an idea whats wrong? Interesting. Now that I've come to the point that I can add options categories in my own plug-in, too, I see the very same behaviour. The programme crashes immediately when the user clicks on that category. There seems to be system behind it. But sorry, I haven't found a solution to it either. Maybe it's DVBViewer that's broken here. Quote
amontillado Posted April 16, 2010 Posted April 16, 2010 Now that I've come to the point that I can add options categories in my own plug-in, too, I see the very same behaviour. The programme crashes immediately when the user clicks on that category. There seems to be system behind it. Did you create the options form? You can find it in the myprograms example in the on show function function TBasePlugin.Show(const strModuleName: WideString; aParent: longword): HRESULT; begin if strModuleName = OPT_NAME then begin if not assigned(frmOptions) then begin frmOptions := TfrmOptions.Create(nil); frmOptions.OnEvent := Onchanged; loaddata(strmodulename); end; frmOptions.ParentWindow := aparent; frmOptions.Align := alclient; frmOptions.Show; end; result := S_OK; end; Quote
LonelyPixel Posted April 16, 2010 Posted April 16, 2010 Did you create the options form? Yes. See http://www.DVBViewer.info/forum/index.php?...st&p=294206 Quote
strgalt Posted May 16, 2011 Posted May 16, 2011 Hallöchen, ist ja schon etwas älter hier, ich versuch es trotzdem. Also wenn ich die im Archiv enthaltene DLL ins PlugIn- Verzeichnis kopieren funktioniert das einigermaße. Wenn ich das selbst kompeliere und ins Verzeichnis kopiere geht gar nichts - kein 'MyPrograms'- Eintrag im Menü und auch nichts mehr in den Optionen zu sehen. Erstellt habe ich die DLL mit Delphi XE, habe keine Änderungen vorgenommen. Muss man da irgend wo was eintragen/ändern. Ich habe einfach das Projekt geladen und per strg F9 kompeliert... Gruß Quote
strgalt Posted May 16, 2011 Posted May 16, 2011 ich sehe gerade auch, dass meine DLL 1,01 MB groß ist, die original DLL ist 212 KB.. ? Quote
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.