Jump to content

COM was fehlt noch?


Guest Lars_MQ

Recommended Posts

Guest Lars_MQ

In diesem Thread sammeln wir einfach mal alle Erweiterungswünsche für die COM schnittstelle des DVBViewer.

 

Ich habe schonmal die Favoriten eingebaut, die hatte ich irgendwie total vergessen. :bye:

 

lars

Link to comment

Bei den Collections (IEPGCollection, IChannelCollection, usw.) wär kewl wenn man die durch foreach-en könnte.

Ich bekomm beim Compilen:

'Interop.DVBViewer.IChannelCollection' because 'Interop.DVBViewer.IChannelCollection' does not contain a definition for 'GetEnumerator', or it is inaccessible

evtl isTimerAt durch isTimerBetween ersetzen oder hinzufügen

Edited by JustCute
Link to comment
Guest Lars_MQ

Ich habe das for each vor der veröffentlich rausgenommen, weil ich da keinen so rechten sinn drin sah, weil es sowas in delphi nicht gibt (also echtes delphi keines der absolut buggy teile >7).

Das war wohl ein fehler, das rauszunehmen, Ich hatte nicht mit einer so relativ grossen resonanz gerechnet :bye:

 

Ich bringe den Collections das for each wieder bei :bye:

Link to comment

Ein paar Codesnippets für visual basic wären auch gerne gesehen.

Ich hab mir gestern einen abgebrochen von MS Access aus die EPG-Daten abzufragen.

Es gibt leider nur über die sehr, sehr langsame und inperformante Art über Get(0,0,0,0).x. Die Andere Art lieferte nur unvollständige Daten und hatte Probleme beim Transfer der ints für channel und transponder.

Wenn die Items zugänglich wären wie bei den Recordings fänd ich das klasse.

 

Wenn ich die MDB am Laufen habe kann ich die hier gerne zur Verfügung stellen.

(Soll EPG-Daten sammeln, filtern, und Recordings erzeugen, sowie die Daten in eine Fillmdatenbank übernehmen mit automatischem Download von Filmdaten wie Darsteller, etc.

 

Gruss, Oli

 

PS: Danke für die COM-Schnittstelle, echt genial!

Link to comment
Guest Lars_MQ
Die Andere Art lieferte nur unvollständige Daten und hatte Probleme beim Transfer der ints für channel und transponder.

Also ich habe das selber schon in vb (word) und vbscript getestet. Keinerlei Probleme gehabt, vielleicht kannst Du den entsprechenden Codeschnippsel ja mal posten, dann teste ich das bei mir mal gegen...

 

[edit]Ich glaube sobald der Admi-ral wieder aus dem Urlaub zurück ist werden so einige vb sachen hier sein :bye:[/edit]

Link to comment
Ich glaube sobald der Admi-ral wieder aus dem Urlaub zurück ist werden so einige vb sachen hier sein

 

Glaubst du, dass VBScript einen ausreichenden WAF hat, um damit im Urlaub bei seiner Freundin durchzukommen? Ich nicht. :bye: Übrigens war admi-ral gestern nachmittag im Forum, durfte aber wohl nicht posten...

Link to comment
Guest Lars_MQ
:bye: Na wir bauen noch ein paar WAF freundliche sachen ein wie News von GZSZ, ein Horrorskop und schliessen den elektrischen gurkenhobel per vbscript an, dann geht das schon :bye:
Link to comment

Wünsche:

 

- Eine "Play" Methode bei IRecording (Starten einer Aufnahme mit vbs)

- Eine Möglichkeit festzustellen ob gerade Timeshift aktiviert ist

- Eine Möglichkeit festzustellen welches Tonformat gerade wiedergegeben Wird MPEG2, Dolby Digital 2.0, Dolby Digital 5.1, DTS

 

 

Noch ein Paar Probleme:

Das Filename Property von IRecording kann ich mit vbs nicht auslesen, dann kommt wiede die dubiose Meldung "Objekt erforderlich", das hatten wir schonmal bei Utils.FreeDB.ReturnDiscInfo.DiscTitle

 

 

Etwas ist mir noch aufgefallen:

Interface IEPGManager sind die Properties EPGNow und EPGNext vertauscht, d.h. EPGNow liefert den EPG des nächsten Programms...

 

Außerdem habe ich noch ein Problem festgestellt (kein COM spezifisches, ist mir jedoch beim COM programmieren aufgefallen):

Wenn mann zwei überlappende Aufnahmen auf einem Transponder programmiert, erfolgt nach der ersten Aufnahme ein Zurücksetzen der Properties ITimerCollection.Recording was zur Folge hat, daß die folgende Aufnahme nicht mehr signalisiert wird und auch keine Meldung mehr beim beim Umschalten erfolgt, und somit die zweite Aufnahme abgebrochen wird wenn man den Kanal wechselt.

 

Gruß

Link to comment
Guest Lars_MQ
- Eine "Play" Methode bei IRecording (Starten einer Aufnahme mit vbs)

ITimer = Timeraufnahme

IRecording = aufgenommenes Programm (liegt dann im Capture verzeichniss vor

ergo eine manuelle aufnahme = DVBViewer.TimerManager.InstantRecord.

Ansonsten mal in das TVGenial.VBS schauen dort werden Timer erstellt.

 

- Eine Möglichkeit festzustellen ob gerade Timeshift aktiviert ist

OK das fehlt.

 

- Eine Möglichkeit festzustellen welches Tonformat gerade wiedergegeben Wird MPEG2, Dolby Digital 2.0, Dolby Digital 5.1, DTS

Hmm mal schauen, wo ich das einbaue.

 

Das Filename Property von IRecording kann ich mit vbs nicht auslesen, dann kommt wiede die dubiose Meldung "Objekt erforderlich", das hatten wir schonmal bei Utils.FreeDB.ReturnDiscInfo.DiscTitle

Das lag damals an dem Record, den VB nicht verdauen konnte. Ich kann das problem nicht nachvollziehen, hast Du nen kleinen codeschnippsel vielleicht?

Link to comment
- Eine "Play" Methode bei IRecording (Starten einer Aufnahme mit vbs)

ITimer = Timeraufnahme

IRecording = aufgenommenes Programm (liegt dann im Capture verzeichniss vor

ergo eine manuelle aufnahme = DVBViewer.TimerManager.InstantRecord.

Ansonsten mal in das TVGenial.VBS schauen dort werden Timer erstellt.

 

Ich habe mich glaube ich falsch ausgedrückt, ich möcht eine vorhandene Aufnahme abspielen.

 

Das TVGenial.VBS kenne ich bereits, das stammt nämlich von mir.

 

Gruß

Edited by e-schrott
Link to comment
Guest Lars_MQ
Das TVGenial.VBS kenne ich bereits, das stammt nämlich von mir.

:wacko: oar ich verliere wohl den überblick :)

 

OK das kann ich einbauen :wub: Obwohl wenn man den filenamen an die playfile vom DVBViewer übergibt, sollte die gespielt werden. Wir müssen mal schauen warum du das nicht auslesen kannst...

Link to comment
Das TVGenial.VBS kenne ich bereits, das stammt nämlich von mir.

:wacko: oar ich verliere wohl den überblick :)

 

OK das kann ich einbauen :wub: Obwohl wenn man den filenamen an die playfile vom DVBViewer übergibt, sollte die gespielt werden. Wir müssen mal schauen warum du das nicht auslesen kannst...

 

Hallo Lars,

war ein Fehler meinerseits.

Ich hatte einen Laufzeitfehler, da ich den Index für die Items zu weit hochzählte.

 

Danke für die schnelle Antwort.

Link to comment
Guest Lars_MQ
Etwas ist mir noch aufgefallen:

Interface IEPGManager sind die Properties EPGNow und EPGNext vertauscht, d.h. EPGNow liefert den EPG des nächsten Programms...

Bestätigt, da hatte ich nen dreher drinne :) Ist korrigiert.

 

Was gibts für erweiterungen:

- istimeshift

- isDVD

- isMediaplayback

- audioformat (-1..3) -1=unknown, 0 =Mono, 1=stereo, 2=2.0, 3=5.1

- Overlap -> um festzustellen ob es eine überschneidung bei Timern gibt.

- For Each geht für alle Collectionen/Listen

Link to comment
ToString() in den einzelnen Interfaces wäre recht praktisch (für die Entwicklung, fürs Abspeichern in Dateien etc.)

Was habe ich mir darunter vorzustellen?

 

Einfach eine String-Darstellung aller properties eines Objects.

 

 

z.B (Pseudocode!):

 

IEPGItem epgItem;

 

epgItem.ServiceID = 0815;

epgItem.Time = "17.05.2005 13:12" ;

epg.Description = "Hello World";

...

 

epg.ToString() ergibt: "ServiceID:0815 TransportID:...Time:17.05.2005 13:12 Description:Hello World "

 

Ich habe dies bei Java zu schätzen gelernt. Immer nützlich wenn ich dies Object mal als String brauche. Da wäre z.B. persistentes Ablegen in Textdateien, Debugging oder mal eine während der Entwicklung schnell eingeschobenen Messagebox:

 

MsgBox( "Zur Zeit bearbeitetes IEPGItem", epgItem );

 

Viele Sprachen unterstützen den hier verwendeten impliziten Type-Cast:. Sonst:

 

MsgBox( "Zur Zeit bearbeitetes IEPGItem", epgItem.ToString() );

 

Auch sinnvoll z.B. im catch-Block zur Fehlerausgabe.

 

 

Übrigens: Alle eure COM-Objekte haben diese Memberfunktion vererbt bekommen. Allerdings steht belangloses Zeug drin da von Euch nicht 'overloaded'.

Dasselbe betrifft auch die Methode 'Equal()'. Hatte z.B das Problem beim Anlegen eines neuen Record-Timers. Wollte sicherstellen dass der nicht schon besteht und dachte was in der der Form:

 

if ( timer.Equal( einerDerTimerAusAllTimers ) )

{

// timer existiert schon in AllTimers

}

 

Gut, über memberweisen Vergleich geht's auch, aber wie oben ist irgenwie eleganter.

 

mfG erwin

Edited by erwin
Link to comment
Guest Lars_MQ
Übrigens: Alle eure COM-Objekte haben diese Memberfunktion vererbt bekommen. Allerdings steht belangloses Zeug drin da von Euch nicht 'overloaded'.

Dasselbe betrifft auch die Methode 'Equal()'. Hatte z.B das Problem beim Anlegen eines neuen Record-Timers. Wollte sicherstellen dass der nicht schon besteht und dachte was in der der Form:

Das bezweifle ich sehr stark. Das mag vielleicht von Deiner Programmiersprache eingesetzt werden, aber die COM Objecte implementieren nur iDispatch Interfaces :dr_evil:

 

IDVBViewer = interface(IDispatch)
//mit
 IDispatch = interface(IUnknown)
   function GetTypeInfoCount(out Count: Integer): HResult; stdcall;
   function GetTypeInfo(Index, LocaleID: Integer; out TypeInfo): HResult; stdcall;
   function GetIDsOfNames(const IID: TGUID; Names: Pointer;
     NameCount, LocaleID: Integer; DispIDs: Pointer): HResult; stdcall;
   function Invoke(DispID: Integer; const IID: TGUID; LocaleID: Integer;
     Flags: Word; var Params; VarResult, ExcepInfo, ArgErr: Pointer): HResult; stdcall;
 end;

 

Ich müsste wahrscheinlich das entsprechende Interface (welches das auch sein mag) implementieren und das habe ich eigentlich nicht unbedingt vor, da es keinerlei Vorteile birgt und ich das auch bisher nur bei .Net gesehen hab.

 

Wie das AsString ist das was für faule Programmierer, die keine eigene routine dafür schreiben wollen :D

Link to comment
  • 2 weeks later...

Hallo, bin wieder da.

 

Das bezweifle ich sehr stark. Das mag vielleicht von Deiner Programmiersprache eingesetzt werden, aber die COM Objecte implementieren nur iDispatch  Interfaces :)

 

Stimmt, Du hast recht. Weder in der Typelib noch wie oben in Deinen Code gezeigt vorhanden. Das Mißverständnis liegt wahrscheinlich daran das ich mich unklar, eigentlich sogar falsch, ausgedrückt habe. Also konkreter: Nicht die von Dir exportieren Interfaces haben die erwähnten Memberfunktionen vererbt bekommen, sondern die Objekte die Ihr intern in Eurem Delphi-Code benutzt. Alle erben von TObject (möglicherweise impliziet). Nun, zumindest in der .NET-basierten Delphi-Version erben sie damit auch Equals(), ToString() u.s.w. Meine Anregung bestand nun darin diese ebenfalls für jedes von Dir exportierte COM-Object über ein, sagen wir, 'Object'-Interface verfügbar zu machen.

 

IDVBViewer = interface(IObject)

 

mit

 

IObject = inerface(IDispatch)

 

 

Ich müsste wahrscheinlich das entsprechende Interface (welches das auch sein mag) implementieren und das habe ich eigentlich nicht unbedingt vor, da es keinerlei Vorteile birgt ...

Du hast recht, funktionelle Erweiterungen haben erstmal vorrang. Das hier würde aus Gründen der Infrastruktur, der Einheitlichkeit u.s.w erfolgen. Was die _keinerlei Vorteile_ betrifft schau bitte nochmal meine Faulheit-Replik am Ende.

 

... und ich das auch bisher nur bei .Net gesehen hab.

Also, so ein root-Object von dem alle diese Methoden erben, haben Java, C#, zumindest alle .NET-basierten Sprachen, so auch die neueren Delphi-Versionen (korrigier mich wenn ich dumm-schwätze; ich programmier selbst nicht in Delphi)

Was gibt 's z.Z- noch an Sprachen im zweistelligen Prozentbereich der Anwendung?

Merkwürdigerweise haben die Methoden sogar den selben Namen, ob SUN oder MS .

Vielleicht doch was dran das man sich sowas mehrfach ausdenkt?

 

Wie das AsString ist das was für faule Programmierer, die keine eigene routine dafür schreiben wollen ;)

Hatte folgendes Problem beim Anlegen eines neuen Record-Timers. Wollte sicherstellen dass der nicht schon besteht .

 

int count = timers.Count;
for ( int i = 0; i < count; i++ ) {
 if ( timers[i].ChannelID == timerItem.ChannelID && timers[i].Date == timerItem.Date
  && timers[i].StartTime == timerItem.StartTime && timers[i].EndTime == timerItem.EndTime) {
   recordIt = false;
   break;
 }
}

Was passiert hier? 4 (vier!) (langsame) COM-calls, und dies in einer Schleife. BRR!

Ich häts so lösen wollen:

int count = timers.Count;
for ( int i = 0; i < count; i++ ) {
 if ( timers[i].Equals( timerItem ) ) { //evt.  timers[i].ToString() ==  timerItem[i].ToString()
   recordIt = false;
   break;
 }
}

Nur noch einmal COM!

Kurz mit Faulheit hat dies nichts zu tun. Nicht der Fleiß des Anwenders Deiner Interfaces begrenzt hier unnötig die Perfomance.

 

Ansonsten, ich hänge nicht an meiner Anregung. Es läuft auch so erstklassig.

 

mfG erwin

Link to comment
Guest Lars_MQ
Alle erben von TObject (möglicherweise impliziet). Nun, zumindest in der .NET-basierten Delphi-Version erben sie damit auch Equals(), ToString() u.s.w. Meine Anregung bestand nun darin diese ebenfalls für jedes von Dir exportierte COM-Object über ein, sagen wir, 'Object'-Interface verfügbar zu machen.

Sie erben alles mehr oder weniger direkt von TObject bei Delphi. (TInterfacedObject bzw TAutoInfObject). ABER der Viewer kommt komplett ohne .NET aus, wird sogar, man mag es kaum glauben, in der alten Delphi 7 Version in Win32 geschrieben.

Es bestehen im Moment auch keinerlei Tendenzen das zu ändern und dem DVBViewer 20 MB+ an Net-Runtimes ans bein zu hängen ;)

Das hat mehrere Gründe: Zum einen sind alle neuen Delphi Versionen hochbuggy. Zum anderen gibt es keinen Zwang auf .NET umzustellen, da es keine Vorteile birgt. Durch die hochgradige Abhängigkeit von diversen windowsinterna (und einigen asm routinen) wird es sicherlich niemals "portabel" werden können.

 

Was passiert hier? 4 (vier!) (langsame) COM-calls, und dies in einer Schleife. BRR!

Stimmt, dafür habe ich extra die Safearray routinen eingebaut. Damit hat man für alle Timer einen Roundtrip (COM-Call) und arbeitet danach lokal. Ich habe das für alle Listen Objecte jetzt integriert, um die Out-of-process (oder womöglich DCOM) geschwindigkeitsproblematik zu entschärfen.

 

Verstehe das nicht falsch, ich bin für jede Anregung dankbar, nur muss ich auch abwägen, ob und wie sowas sinnvoll und schmerzfrei zu integrieren ist ohne alles über gebühr aufzublasen. ;)

 

lars

Link to comment
ABER der Viewer kommt komplett ohne .NET aus, wird sogar, man mag es kaum glauben, in der alten Delphi 7 Version in Win32 geschrieben.

Es bestehen im Moment auch keinerlei Tendenzen das zu ändern und dem DVBViewer 20 MB+ an Net-Runtimes ans bein zu hängen ;)

Das hat mehrere Gründe:

Brauchst Du eigentlich nicht zu begründen. Bin ja auch kein .NET-um-jeden-Preis-Anhänger. Wenns super läuft warum dann?

 

 

 

 

Stimmt, dafür habe ich extra die Safearray routinen eingebaut. Damit hat man für alle Timer einen Roundtrip (COM-Call) und arbeitet danach lokal. Ich habe das für alle Listen Objecte jetzt integriert, um die Out-of-process (oder womöglich DCOM) geschwindigkeitsproblematik zu entschärfen.

Lars! Ich versteh hier nur Bahnhof. Hab ich was verpasst. Nicht die letzte Version?

Was meinst Du damit? Vielleicht kurz an meinen Beispielproblem demonstriert wie man dies einsetzt.

 

Verstehe das nicht falsch, ich bin für jede Anregung dankbar, nur muss ich auch abwägen, ob und wie sowas sinnvoll und schmerzfrei zu integrieren ist ohne alles über gebühr aufzublasen. :)

 

So hab ichs auch immer verstanden.

 

mfG erwin

Link to comment
Guest Lars_MQ

Da war ich wieder etwas voreilig. Die Safearrays für die anderen Listen kommen in der neuen Version erst. Im Moment gibt es die nur für EPG und Channels s. "EPG automatisch durchsuchen" ;)

 

Aber Du hast mich auf eine Idee gebracht. Ich werde eine funktion einbauen, die überprüft ob es einen Timer in eienem bestimmten Zeitraum und Channel gibt. Wenn ja liefert die einen Timer bzw eine Liste von Timern zurück (es können ja mehrere überlappende Timer für einen Channel bestehen).

Link to comment
Aber Du hast mich auf eine Idee gebracht. Ich werde eine funktion einbauen, die überprüft ob es einen Timer in eienem bestimmten Zeitraum und Channel gibt. Wenn ja liefert die einen Timer bzw eine Liste von Timern zurück (es können ja mehrere überlappende Timer für einen Channel bestehen).

 

Ist sogar noch besser als meine Vorstellung von einem Equals () in einer for-Schleife weil dann wirklich nur noch ein COM-Aufruf reicht. Dein Vorschlag sollte auch für die anderen Collektions überprüft werden, also ist ein bestimmter Item in einer Collektion vorhanden mit nur einem Call und ohne Abfageschleife Item für Item.

 

mfG erwin

Link to comment
  • 3 weeks later...
Etwas ist mir noch aufgefallen:

Interface IEPGManager sind die Properties EPGNow und EPGNext vertauscht, d.h. EPGNow liefert den EPG des nächsten Programms...

Bestätigt, da hatte ich nen dreher drinne :bye: Ist korrigiert.

 

Was gibts für erweiterungen:

- istimeshift

- isDVD

- isMediaplayback

- audioformat (-1..3) -1=unknown, 0 =Mono, 1=stereo, 2=2.0, 3=5.1

- Overlap -> um festzustellen ob es eine überschneidung bei Timern gibt.

- For Each geht für alle Collectionen/Listen

 

Hallo Lars,

kann es sein dass die Features bei der 3.2.3 noch nicht umgesetzt sind?

Ausserdem funktioniert die FreeDB Track Abfrage mit vbs immer noch nicht.

 

Gruß

Link to comment
Doch sie sind umgesetzt. ich werde morgen die doku aktualisieren. Ich kann nicht an allen stellen gleichzeitig arbeiten :bye:

Mit der Doku stehen viele kreative Personen auf Kriegsfuß.

Trotzdem finde ich die COM Doku echt super, ausserdem war sie schon kurz nach Programmumsetzung verfügbar, super Leistung.

Link to comment
Doch sie sind umgesetzt. ich werde morgen die doku aktualisieren. Ich kann nicht an allen stellen gleichzeitig arbeiten :)

 

Hallo Lars,

ich habe die methode audiomode getestet.

Leider gibt diese auch bei dd 5.1 Sendungen 2 anstatt 3 zurück.

Z.B. bei Lost auf Pro7 (der NVIDIA Audio Decoder erkennt DD 5.1)

Liegt es vielleicht daran, daß ich den rldumper Filter deregistriert habe, da ansonsten bei Radiosendern kein Ton zu hören ist?

 

Gruß

Link to comment

Ich wünsche mir die Möglichkeit per Menü/Makrofunktion kombinierte Einstellungen vorzunehmen:

1. Helligkeit/Kontrast/Farbe auf Default zurücksetzen + Bildformat Auto + Kein Zoom

2. Helligkeit/Kontrast/Farbe auf Default zurücksetzen + Bildformat Auto + Standard-Zoom für Pseudo 16/9

3. Helligkeit/Kontrast/Farbe auf Default zurücksetzen + Bildformat 16/9 + Kein Zoom

 

Schön wär's auch 3. bei DVD-Wiedergabe automatisch einzustellen und 1. beim Wechsel der Wiedergabequelle oder des Kanals.

Geht das per Script?

Link to comment
  • 4 months later...

Hallo,

ich hab da mal ne Frage/Wunsch bezüglich der EPG ->Time und ->EndTime Funktionen!

Warum wird da nur das Datum ausgegeben wenn eine Sendung um 00:00Uhr beginnt bzw. endet?

 

Time                                  EndTime                  Titel                                Duration

 

18.02.2006 22:30:00    - 19.02.2006*********  Die Bratpfannenstory    01:30:00

19.02.2006*********  - 19.02.2006 00:30:00    Brisant                            00:30:00             

19.02.2006 00:30:00    - 19.02.2006 02:05:00    Spider & Rose              01:35:00

("*" selbst eingefügt ...)

 

Ich bin gerade dabei ein PHP Script zubasteln und da stört es sehr wenn diese "0,:" fehlen! Wäre es nicht möglich diese mit auszugeben?

Link to comment
Guest Lars_MQ

Das ist kein Fehler des COM Objectes, sondern, mal hart gesagt, ein Fehler von deinem script :)

 

Die automations kompatible TDatetime, die verwendet wird, setzt sich zusammen aus

 

xxxxx.yyyyy

 

Wobei xxxxx das Datum ist und yyyyy hinter dem Komma ist die Zeit. Bei 0:00 Uhr sieht das dann so aus

 

xxxxx.0

 

und das scheint bei Dir als reines Datum interpretiert zu werden, was in diesem Fall nicht korrekt ist. o:)

Link to comment

Ja, das automatische Typecasting von PHP ist manchmal etwas tückisch. Du kannst versuchen, den Datumstring, den die Com-Funktion zurückliefert, über date("m.d.Y H:i",mktime() oder strtotime()) zu einem "echten" Datumsstring umzuwandeln.

Edited by Benson
Link to comment
  • 2 months later...

So whats missing is access to media playback information including:

- length of the media

- current position

(wehere applicable)

 

this would come in handy for my VFD plugin.

 

Also, access to ongoing recordings would be useful...

 

WBR

Markymark

Link to comment
Guest Lars_MQ
- length of the media

- current position

You could use IDVBViewer.propGetValue with the tags

 

#Media.title

#Media.file

#Media.duration

#Media.tracknumber

 

Also, access to ongoing recordings would be useful...

You could check

#TV.rec

or

iDVBViewer.TimerManager.Recording

and then check the iTimerItems if they are recording.

 

You could also use the Events

onPlaybackstart

OnPlaybackEnd

OnPlaystatechange

onRDS (for showing Radiotext in the Display)

onAddRecord

onStartRecord

onEndRecord

onControlChange (To show which button is active) -> in combi with tag #currentcontrol

onSelectedItemChange -> (for lists) in combi with tag #selecteditem

onOSDWindow -> in Combi with tag #currentwindow

 

 

To get a list of all possible Tags have a look at

IDVBViewer.propGetAll

This gives you all tag/value pairs in one string seperated by a ";"

 

I hope this ist enough information ;)

Link to comment
- length of the media

- current position

You could use IDVBViewer.propGetValue with the tags

 

#Media.title

#Media.file

#Media.duration

#Media.tracknumber

 

Also, access to ongoing recordings would be useful...

You could check

#TV.rec

or

iDVBViewer.TimerManager.Recording

and then check the iTimerItems if they are recording.

 

You could also use the Events

onPlaybackstart

OnPlaybackEnd

OnPlaystatechange

onRDS (for showing Radiotext in the Display)

onAddRecord

onStartRecord

onEndRecord

onControlChange (To show which button is active) -> in combi with tag #currentcontrol

onSelectedItemChange -> (for lists) in combi with tag #selecteditem

onOSDWindow -> in Combi with tag #currentwindow

 

 

To get a list of all possible Tags have a look at

IDVBViewer.propGetAll

This gives you all tag/value pairs in one string seperated by a ";"

 

I hope this ist enough information ;)

 

Jep, that helps a lot ;) Thanks. Ill put that into the plugin soon. BTW: I will also add a program to check the charset, so it works with yours (the iMon) as well ...

Link to comment
  • 5 months later...

Hallo

 

ich hab mal für alle die in VB6 programieren und Schwierigkeiten haben den DVBViewer anzusprechen ein kleines Beispielprogramm geschrieben. Vielleicht hilfts ja jemandem :bye:

Bin für Verbesserungen natürlich offen und Dankbar...

DVB_Beispiel.zip

Link to comment
  • 2 weeks later...

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