Jump to content
nuts

Erweitertes Beenden v2 / Extended Exit v2

Recommended Posts

nuts

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

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 timeshift
checkrecordingRS=0 => da ich keinen lokalen Recordingservice verwende wird diese Überprüfung übersprungen
sendcommand=12326 => schließt den DVBViewer
sleep=1 => warte 1 Sekunde
run=C:\Program Files\EventGhost\EventGhost.exe -e end => schließt Eventghost / close Eventghost
sleep=1
resume=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 geben
run=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 muss
run="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" standby

Ich 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. biggrin.gif

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 sad.gif )

Im Anhang: Das Skript, sourcecode, alle includes, example.ini, readme.txt
Includes.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 by nuts

Share this post


Link to post
nuts

edit\ neuste Version siehe Startpost!

Edited by nuts

Share this post


Link to post
honeyxx

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.

Share this post


Link to post
nuts

Den Ausschaltknopf auf deiner Fernbedienung?

Wie hast du das genau eingerichtet? Über ein Input-Plugin? Oder über Eventghost?

Share this post


Link to post
nuts

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.

Share this post


Link to post
honeyxx

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.

Share this post


Link to post
nuts

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 by nuts

Share this post


Link to post
honeyxx

Ok, danke. Werd mal beide Varianten durchprobieren, wobei das mit dem eigenem Inputbefehl die elegentere und eher universelle Lösung wäre.

Share this post


Link to post
nuts

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 by nuts

Share this post


Link to post
honeyxx

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 by honeyxx

Share this post


Link to post
nuts

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.

Share this post


Link to post
honeyxx

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.

Share this post


Link to post
nuts

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/

Share this post


Link to post
honeyxx

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 by honeyxx

Share this post


Link to post
nuts

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 by nuts

Share this post


Link to post
honeyxx

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 by honeyxx

Share this post


Link to post
Tüftler

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

 

PS: Gestartet wird deine exe bei mir über die command.vbs und die kümmert sich anschließend um's Beenden und neustarten

Edited by Tüftler

Share this post


Link to post
nuts

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

Nur die INI mit den Befehlen für die Aktionen kann beliebig verändert werden.

Edited by nuts

Share this post


Link to post
Tüftler

Ah ok, hab ich wieder zu viel rumgespielt :devil:

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

Share this post


Link to post
nuts

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.

Share this post


Link to post
Tüftler

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?

Share this post


Link to post
nuts

Ok zwischen Aufnahme und Timeshift könnte man unterscheiden (nächste Version dann).

 

Den Dialog (Yes/No) wollte ich eigentlich so belassen ..
.

Share this post


Link to post
Tüftler

Den Dialog (Yes/No) wollte ich eigentlich so belassen ..

 

.

Das ist doch mehr als nur Yes/No und noch dazu Denglisch-Mix :whistle:

Beenden_Warnung.png

Share this post


Link to post
nuts

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?

Share this post


Link to post
Tüftler

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?

 

Share this post


Link to post
nuts

Ok das ist eine gute Idee. :)

Werde ich dann so umsetzen.

Share this post


Link to post
nuts

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.

Share this post


Link to post
Tjod

Im OSD verwendest du dann einfach die Nummer als Text die auch in der Sprachdatei verwendet wird..

Share this post


Link to post
nuts

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

Share this post


Link to post
Tüftler

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 by Tüftler

Share this post


Link to post
nuts

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 by nuts

Share this post


Link to post
nuts

Müssten wir mal machen.

Wobei ich nicht so sicher bin ob das so wie von uns erwartet übers COM-Objekt funktionieren wird.

Share this post


Link to post
nuts

@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 by nuts

Share this post


Link to post
nuts

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?"

Share this post


Link to post
Lars_MQ

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.

Share this post


Link to post
nuts
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? :glare: )
edit\

#include <DVBViewer.au3>

global $teststring="Stop Recording?" ;[[Dialogs] 33=Stop Recording?
Global $o_dvbviewer= _DVBV_Connect()
If @error Then exit

global $gettrans=_GetTranslation($o_dvbviewer, $teststring)

MsgBox(0, "", $gettrans) ; => hier müsste doch jetzt die Übersetzung in der jeweiligen Sprache rauskommen?

 

Edited by nuts

Share this post


Link to post
Lars_MQ

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.

Share this post


Link to post
nuts

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?

Share this post


Link to post

Join the conversation

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

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