Kommandozeilenversion
-
@DaDirnbocher sagte in Kommandozeilenversion:
@JD-Umsteiger sagte in [Kommandozeilenversion]
NEIN, LEIDER NICHT!
Wenn das so ist, dann kannst nur hoffen, dass die anderen Vorschläge zum gewünschten Ziel führen.
Ja, ist so!
Ich habe auch den alten “Schriftwechsel” dazu nochmal gelesen. Das ist der Grund: MV sperrt einen zweiten Download desselben Videos grundsätzlich - unabhängig von der Auflösung. Wurde mir damals von einem MV-Entwickler auch bestätigt.Kannst du auch in 2 Minuten ganz einfach selbst testen. Das ist der “Schutz-Mechanismus”, um Doppeldownloads bei Abos zu verhindern. Und ein Schutz muss ja sein, sonst würde ich bei jedem Neustart dieselben Videos in einem Abo immer wieder neu laden. Nur hat man nicht berücksichtigt, dass man vielleicht (Sonderfall) auch zwei Auflösungen benötigt. Das geht beim selben MV nur manuell
Aber mein Hauptanliegen war ja die Konsolenversion bzw. ein brauchbarer Ersatz.
Aber ich verstehe, dass dir die Beantwortung meiner Fragen zu aufwändig ist.
Allein schaffe ich das leider nicht mit der “Trigger-File-Lösung”.
-
@JD-Umsteiger sagte in Kommandozeilenversion:
MV sperrt einen zweiten Download desselben Videos grundsätzlich
Ja das stimmt. Die Sperre soll verhindern, dass ein bereits gefundener Film bei mehreren Abo-Treffern mehrfach herunter geladen wird. Das Set wird bei der Entscheidung derzeit nicht ausgewertet.
-
@JD-Umsteiger sagte in Kommandozeilenversion:
Also, ein als ehemaliger, inzwischen in Ruhestand befindlicher Gesamtentwicklungs-Leiter (ca. 70 % SW-Entwickler, 20 % HW-Entwickler, 10 % Konstrukteure) bilde ich mir ein, das in etwa beurteilen zu können
Als ehem. Entwicklungsleiter solltest Du aber wissen das es schon ein wenig unseriös ist Abschätzungen über eine Materie abzugeben ohne die Thematik zu kennen
Ganz so trivial wie man sich das vorstellt ist es nicht das GUI mal eben so zu modifizieren sich zu beenden, alles korrekt zu speichern ohne die vorhandenen notwendigen Routinen damit zu sabotieren. -
@DerReisende77 sagte in Kommandozeilenversion:
Ganz so trivial wie man sich das vorstellt ist es nicht das GUI mal eben so zu modifizieren sich zu beenden, alles korrekt zu speichern ohne die vorhandenen notwendigen Routinen damit zu sabotieren.
Der Teufel steckt immer im Detail, das ist mir schon klar. Aber hier geht es ja nicht um eine zusätzliche Funktion, sondern nur darum, eine bereits vorhandene Funktion (Beenden nach Abschluss aller Downloads) zu aktivieren:
Abfrage: Downloads gestartet? Wenn ja “Beenden nach Abschluss aller Downloads” aktivieren. Etwas “unsauberer” wäre es auch ohne eine Abfrage z.B. nach Ablauf eines Timers möglich, die Funktion “Beenden nach Abschluss aller Downloads” aktivieren.
Nur dieser Schalter ist erforderlich. Damit kann man eigentlich keine vorhandenen notwendigen Routinen sabotieren, oder sehe ich das falsch?
Und das Abbrechen mit ESC wäre ja weiterhin möglich.
Aber da ich sehe, dass du zum MV-Entwickler-Team gehörst, würde ich dich gern fragen, ob du mir vielleicht eine andere Möglichkeit aufzeigen kannst, dies evtl. mit einem Script umzusetzen.
Hier könnte ja tatsächlich ein Timer (timeout in der Kommandozeile) zum Einsatz kommen. Nur ein “sauberes” Beenden (statt Abschießen) wäre natürlich schön.
Gibt es dazu eine Möglichkeit?
Ich hatte meine Anwendung vor Verwendung der MV-Kommandozeilenversion tatsächlich so realisiert, dass ich MV über den Task-Scheduler zum Zeitpunkt x gestartet habe, und dann zum Zeitpunkt y wieder “abgeschossen” habe. Und um bei Zeitänderungen nicht beide Zeiten ändern zu müssen, habe ich das einfach über eine Batchdatei gemacht, die MV gestartet hat, danach mit dem timeout-Befehl 4 Stunden “gewartet” habe, und dann MV abgeschossen habe.
Vielleicht kannst du mir einen besseren Weg aufzeigen, z.B. den Traffic abfragen, den MV generiert, und den MV abhängig davon beenden?
-
Ich nutze überhaupt keine Skripte, von daher bin ich hier keine Hilfe.
Ich habe auf GitHub ein Ticket für einen Startparameter aufgemacht und werde es mir ansehen. Für 13.6.1 wird es wohl eher nichts werden. -
@DerReisende77 sagte in Kommandozeilenversion:
Ich nutze überhaupt keine Skripte, von daher bin ich hier keine Hilfe.
Ich habe auf GitHub ein Ticket für einen Startparameter aufgemacht und werde es mir ansehen.Das klingt ja trotz
Für 13.6.1 wird es wohl eher nichts werden.
erstmal positiv, d.h. dass du zumindest “wohlwollend” darüber nachdenkst?
Trotzdem - bitte nicht böse sein - nochmals meine Frage: Gibt es eine Möglichkeit, den MV durch einen wie auch immer gearteten Befehl “sauber” zu beenden. Vielleicht auch einfach durch Beenden irgendeines “indirekt involvierten” Prozesses, der den MV zum “sauberen” Beenden zwingt?
NACHTRAG 03.09.2020 15:11
Werde dazu nachher mal mit ProcMon prüfen, was MV so alles startet/benötigt. Trotzdem wäre mir natürlich eine fachmännische Meinung lieb, welches Abschießen die geringsten negativen Auswirkungen hat. -
@JD-Umsteiger sagte in Kommandozeilenversion:
Gibt es eine Möglichkeit, den MV durch einen wie auch immer gearteten Befehl “sauber” zu beenden.
Wie wäre es einfach Alt-F4 an MV zuschicken?
Powershell skript sollte das können. -
@media_fread sagte in Kommandozeilenversion:
@JD-Umsteiger sagte in Kommandozeilenversion:
Gibt es eine Möglichkeit, den MV durch einen wie auch immer gearteten Befehl “sauber” zu beenden.
Wie wäre es einfach Alt-F4 an MV zuschicken?
Powershell skript sollte das können.Laut meinen (erneuten) Recherchen auch nur über Taskkill. Aber vielleicht kannst du mir dennoch weiterhelfen. Denn dabei bin ich auf ein Tool einer meiner Favoriten unter den Entwicklern sinnvoller kleiner Tools gestoßen:
Nir Sofer hat u.a. das Tool nircmd entwicklelt, das sehr, sehr viel in dieser Richtung kann, und es kann auch den Befehl WM_CLOSE an alle Fenster der obersten Ebene des Zielprozesses senden.
https://www.nirsoft.net/utils/nircmd.html
Funktioniert auch grundsätzlich, aber nicht bei MV. Welchen Prozess müsste ich denn schließen?
-
nircmd win close ititle "kView"
-
@DaDirnbocher sagte in Kommandozeilenversion:
nircmd win close ititle "kView"
FUNKTIONIERT!
Dankeschön!!! -
Erfahrungs-/Testbericht
@DaDirnbocher sagte in Kommandozeilenversion:
nircmd win close ititle "kView"
vorab: “Shame one me”. Ich hatte mich auf das verlassen, was auf der Seite stand, über die ich auf den Tipp mit nircmd gestoßen war.
Und das funktionierte bei anderen Programmen auch, nicht aber bei MV.
Und da ich bereits etliche Tools von Nir Sofer verwende, hätte ich besser mal die Hilfe-Datei komplett lesen sollen… — peinlich
Also, das Ganze funktioniert sogar besser als erwartet. Denn - wenn Abo-Donwloads laufen - schließt dieser Befehl nicht MV sondern das Fenster, das dann aufpoppt und die verschiedenen Optionen zum Abbrechen anbietet.
MV ist aber so programmiert, dass dieses Fenster - wenn es denn geschlossen wird - sofort erneut erscheint.
Also kann ich das, was ich möchte, dadurch erreichen, dass ich bereits 5 Minuten nach dem Start von MV über ein entsprechendes Timeout das erste Mal mit nircmd versuche, MV zu beenden. Und dieses Timeout wiederhole ich dann in einer Loop alle 5 Minuten.
@echo off :loop timeout 300 nircmd win close ititle "kView" goto loop exit
Wenn dann irgendwann alle Abos geladen sind, verschwindet das Popup-Fenster und beim nächsten Aufruf des nircmd-Befehls wird MV sauber geschlossen.
Jetzt müsste ich der guten Ordnung halber nur noch einen Weg finden, dass dann auch die Batchdatei mit der Loop geschlossen wird.
Any ideas???
-
@JD-Umsteiger nircmd sollte unterschiedliche Rückgabewerte liefern, je nachdem ob “kView” gefunden oder nicht gefunden wurde. Das goto müsste dann je nach Errorlevel bedingt aufgerufen werden. Siehe “help if”.
-
@JD-Umsteiger sagte in Kommandozeilenversion:
MV ist aber so programmiert, dass dieses Fenster - wenn es denn geschlossen wird - sofort erneut erscheint.
Nach meiner Einschätzung bist Du das, der dafür sorgt, dass das Fenster sofort wieder neu erscheint. Indem Du nircmd verwendest.
-
@DaDirnbocher sagte in Kommandozeilenversion:
@JD-Umsteiger sagte in Kommandozeilenversion:
MV ist aber so programmiert, dass dieses Fenster - wenn es denn geschlossen wird - sofort erneut erscheint.
Nach meiner Einschätzung bist Du das, der dafür sorgt, dass das Fenster sofort wieder neu erscheint. Indem Du nircmd verwendest.
Ja klar, das ist der Grund. Ich wollte ja nur damit sagen, dass MV (glücklicherweise) so programmiert ist, dass, wenn man auf das X zum Schließen klickt, dieses Fenster sofort wieder neu erscheint.
So, wie ich es für diese Funktion benötige
-
@Georg-J sagte in Kommandozeilenversion:
@JD-Umsteiger nircmd sollte unterschiedliche Rückgabewerte liefern, je nachdem ob “kView” gefunden oder nicht gefunden wurde. Das goto müsste dann je nach Errorlevel bedingt aufgerufen werden. Siehe “help if”.
… nur wird leider kein Rückgabewert ausgegeben
-
@JD-Umsteiger sagte in Kommandozeilenversion:
dass MV (glücklicherweise) so programmiert ist,
Ich hab das intensive Gefühl, dass wir aneinander vorbeireden. Aber egal.
nircmd win close ititle "kView" nircmd win activate ititle "kView b" nircmd sendkeypress a nircmd sendkeypress enter
Das ist de facto die Lösung, die ich Dir schon in meinem ersten Post in dem Thread vorgeschlagen habe. Nur halt mit AutoIt statt mit nircmd. Das wolltest aber offensichtlich nicht einmal ausprobieren.
Eines möchte ich Dir noch mitgeben. Ich empfehle dringendst, dass Du - bevor Du das in Produktivsystem einsetzt - Dich sehr intensiv mit nircmd, der Syntax, der Bedeutung der Befehle auseinandersetzt und verstehst, was da geschieht (da hab ich noch Zweifel). Und dann auf Deine Bedürfnisse anpasst.
Sonst kanns passieren, dass Du die eine oder andere Überraschung erlebst.
So, und damit klinke ich mich aus dem Thread aus.
-
Funktioniert nicht bei gesperrtem Bildschirm
@DaDirnbocher sagte in Kommandozeilenversion:
nircmd win close ititle "kView" nircmd win activate ititle "kView b" nircmd sendkeypress a nircmd sendkeypress enter
… Ich empfehle dringendst, dass Du … Dich sehr intensiv mit nircmd, der Syntax, der Bedeutung der Befehle auseinandersetzt und verstehst, was da geschieht (da hab ich noch Zweifel)…
… Zweifel, die ich nachfolgend zerstreuen kann
Aber dein ansonsten guter Vorschlag funktioniert nicht:
Bei gesperrtem Bildschirm werden alle Befehle übernommen - nicht aber ENTER.Da du nicht mehr antworten möchtest, vielleicht weiß jemand anderes Rat?
Anmerkungen:
Wenn man ititle verwendet, werden auch andere Fenster geschlossen, die kView enthalten (z.B. diese Seite aus dem Forum, da deren Titel auch kView enthält.) Besser ist stitle bzw. title.Besser ist diese Variante (und mit timeout auch sicherer)
nircmd win close stitle "MediathekView 1" timeout 2 nircmd win activate title "MediathekView beenden" timeout 2 nircmd sendkeypress a timeout 2 nircmd sendkeypress enter
Leider ist es mir bisher aber nicht gelungen, dass enter auch bei gesperrtem Bildschirm angenommen wird.
Und m.W. gibt es für Weiter keinen Hotkey?
-
@JD-Umsteiger sagte in Kommandozeilenversion:
Besser ist diese Variante (und mit timeout auch sicherer)
nircmd win close stitle "MediathekView 1" timeout 2 nircmd win activate title "MediathekView beenden" timeout 2 nircmd sendkeypress a timeout 2 nircmd sendkeypress enter
Leider ist es mir bisher aber nicht gelungen, dass enter auch bei gesperrtem Bildschirm angenommen wird.
Und
nircmd sendkeypress a
funktioniert bei gesperrtem Bildschirm?
Falls ja, versuchenircmd sendkey enter press
.
Oder versuche, vor dem enter noch einmalnircmd win activate title "MediathekView beenden"
abzusetzen.
Wenn das auch nicht funktioniert, mache dir mitnircmd sendkey printscreen press
nach demactivate
ein Bild des gesperrten Bildschirms in die Zwischenablage. -
@Georg-J
Danke für die Vorschläge.
Ich antworte morgen ausführlich!