nuts Posted February 16, 2012 Share Posted February 16, 2012 (edited) Hallo zusammen, edit \ 19.03.2012 Update auf Version 0.5! edit \ 16.05.2013 Update auf Version 1.0! aufgrund der immer wiederkommenden Meldungen über das Standby-Verhalten hier mal ein Autoit-Skript um das Menü "Erweitertes Beenden" möglichst frei gestalten zu können.Installiert wird es am einfachsten über menüedit.Ist ziemlich kompliziert geworden. Ich hoffe das versteh überhaupt jemand ... Also durch Aufrufen des Skriptes wird ein OSD Fenster erstellt, das alle Sektionen der "Extended Exit.ini" darstellt.Dort könnt ihr auswählen welche Sektion abgearbeitet wird.Jede Sektion kann gelöscht oder umbenannt werden und es können auch eigene Sektionen hinzugefügt werden.Die bekannte (s. DVBV) Auswahl ist vorbelegt (Close, Shutdown, Reboot, Standby, Hibernate), jedoch sind die default Einstellungen nahezu identisch mit der DVBViewer eigenen Funktion.Also muss jede Sektion mit Leben gefüllt werden. Dafür gibt es verschiedene Schlüsselworte: ; Keywords (Key): (Extended Exit, MyActions, Sleeptimer, ProcesstaskEX) ; checkrecording (1= check current recordings/timeshift | 0= do not check current recordings/timeshift) ; checktimeshift (1= check current recordings | 0= do not check current timeshift) ; checkrecordingRS (1= check current recordings Recordingservice | 0= do not check current recordings Recordingservice) ; checkprocesslist (1= check processlist and cancel section if an activ process is found| 0= disbale) ; checkwindowlist (1= check windowlist and cancel section if a window is found| 0= disbale) ; checkplaying (1= check current recordings/timeshift | 0= do not check current recordings/timeshift) ; instantrec (0= stop | 1=create timer from instantrec - endtime from epg | else=custom endtimer ) ; sleep (in seconds) ; run (runs an external program) ; runwait (runs an external program and wait until its finished) ; shellexecute (s. run) ; shellexecutewait (r. runwait) ; runbybatch (creates a batchfile that runs an external program and delets the batchfile afterwards) ; processclose (process name to close) ; processcloseloop (process name to close => close process until it doesnt exist) ; winclose ( window title to close ) ; execute (autoit function) ; setdisplay (refresh rate i.e. 24,50 or 60) ; refreshhdmi (refresh hdmi connection -> paramater = timeout in seconds betwenn monitor on/off) ; restartservice (service name) ; sendcommand (DVBViewer Action-ID) ; shader (activate Pixelshader / none => deactivate sahders) ; audio ( audio=A /audio=B =>switch to Audio A/B) ; video (video=A / video=B =>switch to Video A/B) ; showwindow (WindowID) ; processtask (run process task on Recordingservice) ; devcon (hardware ID to restart by devcon => restart) ; devcon2 (hardware ID to restart by devcon => disable + enable) ; cec (Stdin data to write in cec-client.exe) ; denon (denon telnet control) ; egtcpsend= (send TCP Data to Eventghost) ; tcpcontrol (s. TCPControl) => could not be used by "TCPControl.exe" ; shutdown (0 = Logoff | 1 = Shutdown | 2 = Reboot | 4 = Force | 8 = Power down | 16= Force if hung | 32= Standby | 64= Hibernate) ; resume (1= run resume-actions after receiving PBT_APMRESUMESUSPEND Message | 0= no action) => Extended Exit and Sleeptimer only ; loop (MyActions only) ; showwarning (Extended Exit only => 1=show warning on checkrecording, checktimeshift, checkrecordingRS | 0=do not show warning) ; TCPControl: ; isrecording (DVBViewer is recording => return true otherwise false) ; istimeshift (DVBViewer is timeshift => return true otherwise false) ; isplaying (DVBViewer is playing => return true otherwise false) ; isrunning (DVBViewer isrunning => return true otherwise false) ; isnotrunning (DVBViewer isnotrunning => return true otherwise false) ; restart (Restart TCPControl) ; exit (Exit TCPControl) ; sendcommand (DVBViewer Action-ID) ; run (runs an external program) ; shutdown (0 = Logoff | 1 = Shutdown | 2 = Reboot | 4 = Force | 8 = Power down | 16= Force if hung | 32= Standby | 64= Hibernate) ; section (run a custom section in tcpcontrol.ini) ; devcon (hardware ID to restart by devcon => restart) ; devcon2 (hardware ID to restart by devcon => disable + enable) ; execute (autoit function) Die Konfigurationsdateien "my_scripts.ini" "Extended Exit.ini" und "Extended Exit_config.ini" findet ihr in diesem Verzeichnis: @AppDataCommonDir & "\my_scripts\" z.B. unter Win7: "C:\ProgramData\my_scripts"Jede Sektion wird von oben nach unten abgearbeitet. Die Reihenfolge spielt also eine wichtige Rolle!Eine Ausnahme ist das Schlüsselwort "shutdown" - dieser Befehl wird immer ganz zum Schluss ausgeführt.Bei meinen Tests hat sich das als stabiler herausgestellt.Bei mir sieht die Standby Sektion beispielsweise ungefähr so aus: [standby]checkrecording=1 => überprüft laufende timeshift checktimeshift=1 => überprüft timeshiftcheckrecordingRS=0 => da ich keinen lokalen Recordingservice verwende wird diese Überprüfung übersprungensendcommand=12326 => schließt den DVBViewersleep=1 => warte 1 Sekunderun=C:\Program Files\EventGhost\EventGhost.exe -e end => schließt Eventghost / close Eventghostsleep=1resume=1 => warte auf die PBT_APMRESUMESUSPEND Nachricht und weiter gehts mit der Sektion "Resume" (Extended Exit_config.ini)shutdown=32 => Standby durch das Skript selbst auslösen / Standby by "Extended Exit_v2" script Auf Wunsch (resume=1) bleibt das Skript nachdem es mit der Sektion durch ist weiterhin aktiv und warte auf die PBT_APMRESUMESUSPEND Nachricht.Wird die PBT_APMRESUMESUSPEND Nachricht empfangen (abgefeuert vom System nach dem S3/S4) geht es mit der Sektion "Resume" in der "Extended Exit_config.ini" weiter. Diese muss nach dem gleichen Schema angelegt werden.Bei mir sieht das ca. so aus: [Resume]sleep=2 => warte 2 Sekunden um dem System etwas zeit zu gebenrun=C:\Program Files\EventGhost\EventGhost.exe -e startup => starte Eventghost und führe das Makro "startup aus"sleep=4 => warte 4 sekunden, da EG erst den TV und den AV-Receiver anschalten mussrun="C:\Program Files\DVBViewer\DVBViewer.exe -x5" => DVBViewer starten Neben dem Startup über das OSD-Popup Fenster kann man dem Skript einen Kommandoparameter mitgehen (der erste wird ausgewertet) und so eine Sektion in der "Extended Exit.ini" direkt aufzurufen.Bsp: "%\Extended Exit_v2.exe" standbyIch hoffe es ist soweit halbwegs verständlich.Mit meinem 24/7 TV-Server spielt die Recordingservice- und Aufnahmeproblematik bei mir übrigens gar keine Rolle.D.h. möglicherweise sind einige Details nicht 100% durchdacht und muss noch nachgebessert werden.Tests bevor wichtige Aufnahmen anstehen wären auch angebracht. Erweiterungen wie HTTP request, COM-Befehle oder Sendmassage wären auch denkbar. Nur das lässt sich imho nichtmehr so gut in einer INI abbilden.Sollte das jemand brauchen um mit anderen Programmen zu kommunizieren müsste ich mal schauen wie man das im Detail lösen könnte.Todo:-wake on lan-einfache backup Funktion-devcon durch direkte winapi Funktionen ersetzen (hab nur die Doku verlegt wo das erklärt ist )Im Anhang: Das Skript, sourcecode, alle includes, example.ini, readme.txtIncludes.zip werden nur für eigene Weiterentwicklungen bennötigt. Für reine Anwender reicht es "extended exit.zip" herunterzuladen extended exit.zip Gruß nuts extended exit.zip includes.zip Edited May 16, 2013 by nuts Quote Link to comment
nuts Posted February 18, 2013 Author Share Posted February 18, 2013 (edited) edit\ neuste Version siehe Startpost! Edited May 16, 2013 by nuts Quote Link to comment
honeyxx Posted February 18, 2013 Share Posted February 18, 2013 Ich habs soweit eingerichtet. Funktioniert auch ganz gut. Habe aber noch ein einziges Problem dass ich nicht hinbekomme. Und zwar wenn ich den Ausschaltknopf Drücke, dann kommt trotzdem das volle Menu vom DVBViewer. Hab sogar den Eintrag dafür in der windowdef per hand entfernt und den eintrag den das Script hinzufügt entsprechend angepasst, aber das hilft auch nicht. Sprich übers OSD komme ich in das Menu vom dem Script aber über den Ausschaltknopf krieg ich das Orginalmenu vom DVBViewer. Quote Link to comment
nuts Posted February 19, 2013 Author Share Posted February 19, 2013 Den Ausschaltknopf auf deiner Fernbedienung? Wie hast du das genau eingerichtet? Über ein Input-Plugin? Oder über Eventghost? Quote Link to comment
mague Posted February 19, 2013 Share Posted February 19, 2013 Vielleich wird das hier gesucht: http://de.DVBViewer.tv/wiki/Optionen_Beenden Quote Link to comment
nuts Posted February 19, 2013 Author Share Posted February 19, 2013 Da kann ich mich aber nicht so ohne weiteres einklinken. Um mein Skript auf die Powertaste zu legen müsste diese schon frei zuordenbar sein. Quote Link to comment
honeyxx Posted February 19, 2013 Share Posted February 19, 2013 Den Ausschaltknopf auf deiner Fernbedienung? Wie hast du das genau eingerichtet? Über ein Input-Plugin? Oder über Eventghost? Ja den Ausschaltknopf an meiner FB meine ich. Eingerichtet ist es über EventGhost und das DVBViewer Plugin dadrin. FB ist eine Harmony mit MCE Profil und einem CIR empfänger. Die MCE Plugins für den DVBViewer funktionieren mit diesem Empfänger eh nicht. Daher auch Eventghost. Das Ereignis löst das Exit Macro aus, dass dann das erw. beenden Menu im DVBViewer abruft, sofern es in den beenden Optionen im DVBViewer eingestellt ist. Stell ich das dort um auf einfaches Beenden, dann führt es die dort ausgewählte Action aus. Hab das auch mit meiner Technisat FB und dem Technisat Dongle ausprobiert, dass Ja Tastenbefehle an den Rechner schickt und den DVBViewer über die Tastenkommandos anspricht (also ohne EvenGhost). Das Ergenis ist das selbe. Quote Link to comment
nuts Posted February 19, 2013 Author Share Posted February 19, 2013 (edited) Das ist eine brauchbare Basis. Der Exit Befehl vom DVBViewer selbst kann das "Erweiterte Beenden" Menü (vom DVBV selbst, was für deine Bedürfnisse nicht passt) aufrufen oder den DVBViewer direkt beenden (s. Link von mague). Nun musst du Eventghost beibringen nicht den Exit Befehl an den DVBViewer zu schicken, sondern mein Skript aufzurufen. Dafür gibt es in Eventghost den Befehl "Starte Anwendung". Alternativ (das funktioniert dann auch ganz ohne Eventghost, aber EG ist grundsätzlich immer eine gute Idee) könnte das Skript auch über einen "eigenen Inputbefehl" aufgerufen werden. http://de.DVBViewer.tv/wiki/Eigene_Inputbefehle_Befehle#Selbst_erstellte_Inputbefehl Beispiele wie man externe Anwendungen/Skripte einbindet gibt es hier: http://de.DVBViewer.tv/wiki/Command.vbs Edited February 19, 2013 by nuts Quote Link to comment
honeyxx Posted February 20, 2013 Share Posted February 20, 2013 Ok, danke. Werd mal beide Varianten durchprobieren, wobei das mit dem eigenem Inputbefehl die elegentere und eher universelle Lösung wäre. Quote Link to comment
nuts Posted February 20, 2013 Author Share Posted February 20, 2013 (edited) Würde ich auch so sehen. Du kannst den Inputbefehl natürlich auch mit EG aufrufen. Dazu gibt es im DVBV Plugin einen Befehl, der eine einstellbare Action-ID an den DVBViewer sendet. Ausschaltknopf-Event => Makro in EG mit dem Befehl "Action-ID 20480" => command.vbs => Extended Exit_v2.exe Skript Die command.vbs sieht dann ca. so aus (Pfad zum Skript ggf. anpassen): sub main(ActionID) Select Case ActionID Case 20480 'Bei ActionID 20480 Starte Extended Exit_v2.exe OSD.ExecNewProcess "C:\Program Files\DVBViewer\myscripts\Extended Exit_v2.exe", "", False, True End Select end sub Edited February 20, 2013 by nuts Quote Link to comment
honeyxx Posted February 23, 2013 Share Posted February 23, 2013 (edited) So, hab das jetzt mal durchgetestet. Soweit klappt das ganz gut. Es gibt da nur ein Problem. Wenn man den DVBViewer über EventGhost so startet, dann wird das erw. beenden Menu auch beim Start abgerufen, selbst wenn ich das Macro vor das Start Macro lege, da das Action Macro auch den DVBViewer startet, um dann die Action auszuführen. Habe auch mit Bedingungen in EventGhost experimentiert, aber das hat´s auch nicht gebracht. Wenn ich das normale Exit Macro vor das Start Macro setze, dann funktioniert das ganz so wie es soll. Aber eben nicht, wenn ich statt des Exit Macros das Action Macro benutzte. Zudem ist diese Lösung nur mit EventGhost machbar. Ziel wäre hier aber, dass das beenden Menu des DVBViewers beim Abruf von Exit komplett durch dein Script ersetzt wird. Dann wäre es auch nicht von EventGhost abhängig und würde mit jeder Fernbedienung funktionieren. Edited February 23, 2013 by honeyxx Quote Link to comment
nuts Posted February 23, 2013 Author Share Posted February 23, 2013 Nunja das kann aber nicht an meinem Skript liegen. Mein Skript hängt sich nicht beim Start des DVBV oder einem EG Makro ungefragt mit rein. Es wird nur aufgerufen wenn der Benutzer den Aufruf (in EG selbst, über die command.vbs oder übers OSD) entsprechend konfiguriert hat. Du kannst ja mal deine EG konfig anhängen oder etwas beschreiben welchen Weg du jetzt gewählt hast. Quote Link to comment
honeyxx Posted February 23, 2013 Share Posted February 23, 2013 Nein, da hast du mich etwas falsch verstanden. Das liegt nicht an deinem Script sondern an EventGhost. Also meine ursprüngliche Config war die: 1 Exit Macro 2 Start Macro Das Exit Macro startet den DVBViewer nicht. Beendet ihn nur, wenn der DVBViewer schon läuft. Läuft der DVBViewer also nicht, wird er quasi ignoriert und beim selben Ereignis wird nur das Start Macro ausgeführt. Wenn der DVBViewer aber bereits ausgeführt wird, wird also das Exit Macro als erstes ausgeführt und der DVBViewer beendet. Dann wird auch nicht das Start Macro ausgeführt, ausse das Ereignis wird erneut ausgelöst. Die geänderte Config sieht folgendermassen aus: 1 Send Action to DVBViewer 2 Start Macro Problem hierbei ist aber, dass das Send Action to DVBViewer Macro auch den DVBViewer startet und dann die Action auslöst. Es kommt also garnicht zu der Situation, dass dieses Macro ignoriert wird und stattdessen das Start Macro ausgeführt wird. Daher wird das Send Action Macro immer als erstes ausgeführt. Egal ob der DVBViewer schon läuft oder man ihn starten möchte. Mit dem Ergenis, dass beim Starten und Beenden des DVBViewers das Menu abgerufen wird. Ich habe das mit Bedingungen im Evenghost versucht zu lösen, aber das klappt nicht. Daher wäre es halt optimal, wenn sich das Script so einklinkt, dass es das beenden Menu des DVBViewers unterdrückt und an seiner Stelle erscheint. Das würde dann auch ohne EventGhost und dessen Send Action Macro funktionieren. Quote Link to comment
nuts Posted February 23, 2013 Author Share Posted February 23, 2013 Hm okay. Also meine EG Konfig. arbeitet mit verschiedenen "Context Folders". D.h. Start Makro => Starte DVBViewer + "aktivere exklusiv DVBViewer context folder" Und im DVBViewer context folder befindet sich dann das Exit Makro. Das sieht so aus: Exit Marko => Send action (um mein Skript auszuführen) + "aktiviere exklusiv keyboard folder". Wie auch immer. Das das senden einer Action-ID den DVBViewer startet ist imho ein Bug im EG DVBViewer Plugin. Welches verwendest du? Hier gibt es eine weiterentwickelte Version (nicht sicher wie das dort gelöst ist): http://www.DVBViewer.tv/forum/topic/44025-suspendghost-steuerung-von-standby-ruhezustand-mit-eventghost/page__st__20__p__354034__hl__ghost__fromsearch__1#entry354034 s. auch:http://www.DVBViewer.tv/forum/topic/49985-eventghost-DVBViewer-plugin-new-version/ Ich habe hier auch eine einfache Version gepostet mit der dieses Problem nicht auftritt (fehlen dafür einige Möglichkeiten des Orginal-Plugins): http://www.DVBViewer.tv/forum/topic/48623-einfaches-eventghost-plugin-fur-den-DVBViewer/ Quote Link to comment
honeyxx Posted February 23, 2013 Share Posted February 23, 2013 (edited) Hm, also Im Plugin selbst steht keine Versionsnummer. Ist halt das DVBViewer Plugin, dass auch in der neusten EventGhost Version angeboten wird. Das mit den exclusiv context foldern könnte eventuell die Lösung dafür sein. Musst ich mal ein bissel rumprobieren. Ich sehe das auch so, dass es ein Bug im Eventghost ist. Oder halt in dem dort angebotenem Plugin. Edited February 23, 2013 by honeyxx Quote Link to comment
nuts Posted February 23, 2013 Author Share Posted February 23, 2013 (edited) Ich weiss jetzt nicht welche Version des DVBV Plugins bei EG (Version?) beiliegt. Du kannst ja mal die anderen EG Plugins testen, zumindest für mein Plugin solltest du aber einen eigenen Ordner im EG\Plugins Verzeichnis anlegen und dort die __init__.py ablegen. Edited February 23, 2013 by nuts Quote Link to comment
honeyxx Posted February 24, 2013 Share Posted February 24, 2013 (edited) Also die aktuellste EG Version ist die 0.4.1.r1610, wie man auch der Seite von EG entnehmen kann. Die hab ich auch bei mir drauf. Ich werd die Plugins wie gesagt mal bei Gelegenheit testen. Mal sehen ob ich das noch irgendwie hinbekomme. Im Moment lasse ich es aber so wie es ist, da das doch einiges an Zeit in Anspruch nimmt, die ich nicht immer habe. Edited February 24, 2013 by honeyxx Quote Link to comment
Tüftler Posted March 16, 2013 Share Posted March 16, 2013 (edited) Hallo nuts, super Programm, mit dem kann ich alles so einrichten wie ich es brauche, respekt. Das Einzige was mir neu ist, warum habe ich einen DENON (Reciver) und wo steht der? Ich kriege den Eintrag nicht aus der ini, der Eintrag wird permanent neu erstellt. Ansonsten geht erstmal alles was ich bisher gebraucht habe, ich forsche weiter. PS: Gestartet wird deine exe bei mir über die command.vbs und die kümmert sich anschließend um's Beenden und neustarten Edited March 16, 2013 by Tüftler Quote Link to comment
nuts Posted March 16, 2013 Author Share Posted March 16, 2013 (edited) Die Einträge für Denon sind für die Steuerung für Denon/Marantz Geräte. Wenn du keinen Denon/Marantz zuhause hast schadet der Eintrag natürlich auch nicht. Einfach stehen lassen und den Befehl "denon" in keiner Befehlskette verwenden. Die Sektion wird beim Beenden immer wieder neu angelegt. Das hat folgenden Hintergrund: Ich packe in die Anwendung die Standard INI, prüfe bei der vorhandenen INI ob Einträge fehlen und erstelle diese bei Bedarf mit den default Werten neu. Somit können neue Einträge (z.B. bei neuen Funktionen) automatisch hinzugefügt werden und die bisherigen Einstellungen bleiben erhalten. Ob man das wirklich bei jedem Beenden prüfen muss ist die Frage, aber normalerweise passiert ohne eine neue Version da auch gar nichts. P.S. Eigentlich sollte die config. ini nicht manipuliert werden. Nur die INI mit den Befehlen für die Aktionen kann beliebig verändert werden. Edited March 16, 2013 by nuts Quote Link to comment
Tüftler Posted March 16, 2013 Share Posted March 16, 2013 Ah ok, hab ich wieder zu viel rumgespielt das mit dem Denon ist auch nicht so schlimm es wird wohl sicher aber ein Marantz NR1603. Platz habe ich jedenfalls schon mal geschaffen und mein FUSION V2 durch ein flaches HTPC-Gehäuse ersetzt. -> Review mit all meinen verbauten Komponenten erfolgt dazu in kürze Quote Link to comment
nuts Posted March 16, 2013 Author Share Posted March 16, 2013 Den Marantz NR1603 kannst du über den Befehl "denon" auch steuern (ich hab selbst mittlerweile auch ein Marantz-Gerät). Das Telnet-Konstrukt ist bei Denon/Marantz gleich und daher macht es keinen Sinn dafür 2 verschiedenen Befehle einzuführen. Quote Link to comment
Tüftler Posted March 17, 2013 Share Posted March 17, 2013 ich würde gerne Timeshift von der Überprüfung ausschließen, das händel ich schon selbst. Kann man recording und Timeshift auch irgendwie trennen? checkrecording=1 => überprüft laufende, lokale Aufnahmen und timeshift Auch wäre es gut wenn die Hinweismeldung beim Beenden in deutsch erscheinen würde, kann man das einstellen? Quote Link to comment
nuts Posted March 17, 2013 Author Share Posted March 17, 2013 Ok zwischen Aufnahme und Timeshift könnte man unterscheiden (nächste Version dann). Den Dialog (Yes/No) wollte ich eigentlich so belassen ... Quote Link to comment
Tüftler Posted March 17, 2013 Share Posted March 17, 2013 Den Dialog (Yes/No) wollte ich eigentlich so belassen .. . Das ist doch mehr als nur Yes/No und noch dazu Denglisch-Mix Quote Link to comment
nuts Posted March 18, 2013 Author Share Posted March 18, 2013 Ja das die Formulierung nicht so toll ist weiss ich auch. Aber mehrsprachige Skripte sind ganz schön aufwendig ... Vielleicht hast du eine besseren Vorschlag für die Formulierung? Quote Link to comment
Tüftler Posted March 18, 2013 Share Posted March 18, 2013 Du könntest dich doch direkt an der lng Datei langhangeln und zb. unter Dialog die 31 oder 33 benutzen. Dann geht auch die Übersetzung wie von selbst. [Dialogs] 31=Sofortaufnahme(n) durch Recording Service beenden? 32=Aufnahme durch Plugin beenden? 33=Aktive Aufnahme(n) beenden? Quote Link to comment
nuts Posted March 18, 2013 Author Share Posted March 18, 2013 Ok das ist eine gute Idee. Werde ich dann so umsetzen. Quote Link to comment
nuts Posted March 19, 2013 Author Share Posted March 19, 2013 Alle Funktionen für die neue Version hätte ich jetzt drin, aber die Sache mit den Sprachdateien krieg ich irgendwie nicht hin. Wie wähle ich beim Dialog aus welche Sektion der Sprachdatei verwendet werden soll? Bei mir wird dazu die Sektion OSD verwendet. Quote Link to comment
Tjod Posted March 19, 2013 Share Posted March 19, 2013 Im OSD verwendest du dann einfach die Nummer als Text die auch in der Sprachdatei verwendet wird.. Quote Link to comment
nuts Posted March 19, 2013 Author Share Posted March 19, 2013 Das ist soweit klar, aber die Sprachdatei ist in mehrere Sektionen unterteilt. Wie steuer ich gezielt die gewünschte Sektion an? [Dialogs]8=Stop Timeshift?...31=Stop Instant Recording(s) by Recording Service?32=Stop Recording by Plugin?33=Stop Recording? [OSD]...8=Weatherforecast Verwendet wird in dem Fall (IOSD.ShowYesNo) der Eintrag aus der Sektion [OSD]. Quote Link to comment
Tüftler Posted March 19, 2013 Share Posted March 19, 2013 (edited) Das war mir gestern bei einem kurzen Versuch auch aufgefallen. Ich hatte gehofft du kommst da speziell an die Dialogs-Einträge ran. Ich kriege als OSD Anzeige auch nur die Einträge aus der Section [OSD]. Im Com-Interface gibt es nur noch procedure LoadAddLanguage(const Filename: WideString); Loads a user defined language file and adds it to the translation table of the DVBViewer. The format should be like: [Plugin] Add Bookmark=Lesezeichen hinzufügen Afternoon=Nachmittag Parameters Filename The name of the file with path. und nur wenige Einträge wenn man nach language sucht. Edit: Oh gerade gefunden, vielleicht hilfts: function GetTranslation(const Original: WideString): WideString; Gets a translation for a word or phrase if present in the translation table. Parameters Original the word/phrase to be translated. Returns The translation if found otherwise the Original. Edited March 19, 2013 by Tüftler Quote Link to comment
nuts Posted March 19, 2013 Author Share Posted March 19, 2013 (edited) Hm ehrlich gesagt keine Ahnung wie man die Funktion richtig benutzt. Mal klappts, mal (meistens) nicht ... Hat dazu jemand ein Beispiel? Am besten mit den von Tüftler vorgeschlagenen Zeilen (Post 26). Konkreter: if present in the translation table Woher weiss ich was alles im "tranlation table" drinsteht? Edited March 20, 2013 by nuts Quote Link to comment
Tüftler Posted March 19, 2013 Share Posted March 19, 2013 Wir sollten wohl mal bei Lars nachfragen, ich kriege nur eine Translation bei den [OSD] Sachen. Man muss doch an die anderen Übersetzungen auch rankommen ohne extra die lng direkt zu lesen. SnoopyDog hatte das Problem in ähnlicher Weise auch schon -> http://www.DVBViewer.tv/forum/topic/38905-nicht-numerische-werte-aus-sprachdatei-ins-osd/ Quote Link to comment
nuts Posted March 19, 2013 Author Share Posted March 19, 2013 Müssten wir mal machen. Wobei ich nicht so sicher bin ob das so wie von uns erwartet übers COM-Objekt funktionieren wird. Quote Link to comment
nuts Posted March 19, 2013 Author Share Posted March 19, 2013 (edited) @Tüfftler: Du kannst ja sicherheitshalber mal Vorschläge für einen deutschen und englischen Text machen. Vielleicht mach ich dann einfach zwei Sprachvarianten (aber im Code). Richtig mehrsprachig mache ich das Skript nicht. Das ist mir zu aufwendig ... Edited March 19, 2013 by nuts Quote Link to comment
nuts Posted March 19, 2013 Author Share Posted March 19, 2013 So ca. oder? $a_lang[0][0]="Stop Timeshift?"$a_lang[0][1]="Timeshift beenden?"$a_lang[1][0]="Stop Recording?"$a_lang[1][1]="Aktive Aufnahme(n) beenden?" Quote Link to comment
Lars_MQ Posted March 19, 2013 Share Posted March 19, 2013 Es werden nur eine sprache vom DVBViewer geladen. Intern wird englisch als grundlage vorgehalten. Wenn mehrsprachigkeit gewünscht ist, muss das über die lng dateien erfolgen. An die entsprechenden Daten kann man über das iDVBViewer.GetTranslation(const Original: WideString): WideString; herankommen. Quote Link to comment
nuts Posted March 19, 2013 Author Share Posted March 19, 2013 (edited) Also mit der Funktion: iDVBViewer.GetTranslation(const Original: WideString): WideString; Muss ich immer den englischen Eintrag übergeben? Oder den von der gerade eingestellten Sprache (das macht wenig Sinn oder? ) edit\ #include <DVBViewer.au3>global $teststring="Stop Recording?" ;[[Dialogs] 33=Stop Recording?Global $o_dvbviewer= _DVBV_Connect()If @error Then exitglobal $gettrans=_GetTranslation($o_dvbviewer, $teststring)MsgBox(0, "", $gettrans) ; => hier müsste doch jetzt die Übersetzung in der jeweiligen Sprache rauskommen? Edited March 19, 2013 by nuts Quote Link to comment
Lars_MQ Posted March 19, 2013 Share Posted March 19, 2013 Du basierst das alles auf dem englischen. Es werden dabei die Einträge aus dem [OSD] bereich verwendet. aus der deutsch.lng Do you receive TV from more than one satellite?=Empfangen Sie TV von mehreren Satelliten? die "linke Seite" vor dem "=" muss an das gettranslation übergeben werden und die "rechte Seite" wird zurückgeliefert. Wenn kein entsprechender Eintrag vorhanden ist, wird der Eingabe String zurückgeliefert. Quote Link to comment
nuts Posted March 19, 2013 Author Share Posted March 19, 2013 Ah ok verstanden - danke. Die anderen Sektionen können mit der Funktion dann nicht verwendet werden? Ist das Absicht oder lässt sich das leicht ändern? 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.