Codebeispiele mAirListScript

Ich mag’s fast nicht sagen, aber es tut sich nur in sofern was, das mL keine Fehler im Log ausspuckt. Aber das Programm wird doch nicht gestartet. Ich befürchte, ich müsste die *.cmd in eine *.exe oder eine Batch-Datei packen… Hoffe dat hilft…

Du kannst ja mal die Variante “ShellExecute” ohne “Hidden” versuchen und gucken, ob du das schwarze Fenster aufblitzen siehst. Vielleicht auch am Ende der cmd-Datei einen “pause”-Befehl einbauen, damit es nicht sofort wieder zu geht.

Huhu!

Die Idee hatte ich auch schon, brachte nix. Ich seh’s auch daran, das die Audiodatei, die das Programm erstellen soll, nicht erscheint. Starte ich die Datei per Hand, geht’s wie gewohnt problemlos.

grübel

EDIT: Pause-Befehl ist drin, ohne Wirkung…

EDIT, die 2.te: Ich habe es jetzt auch mit einem Button probiert und das Script so starten lassen, ohne Erfolg. Mag mAirList möglicherweise die cmd-Datei an sich nicht?

Hm, vielleicht kann man wirklich nur .exe-Dateien ausführen - aber in diesem Falle könnte “start” weiterhelfen, probier es mal so:

begin
  ShellExecuteHidden('start', 'F:\Backup\werbungscript-v5-rmnradio\rmnradio.cmd');
end.

Also zunächst mal ist die Syntax folgendermassen:

ShellExecute(‘C:\Folder\Filename.exe’, ‘’);

und das hinten vor Klammer zu ist kein Gänsefüsschen sondern 2x Apostrophe.

Mit cmd selbst hab ich es auch noch nie probiert. Wenn mich aber nicht alles täuscht kann man eine cmd-datei aber problemlos in eine exe oder com umbenennen. Jedenfalls glaube ich mich zu erinnern, war das mal so in den DOS-Anfängen ???
Einfach mal probieren…

Ansonsten auch mal den Umweg über eine batch (.bat) probieren.

Viel Erfolg:
-Serge-

Noch ne Idee, dürfte die sauberste sein:

begin
  ShellExecuteHidden('cmd.exe', 'F:\Backup\werbungscript-v5-rmnradio\rmnradio.cmd');
end.

Genau Torben, das muss funktionnieren und ist auch kein Gefrickel !

Hi Jungs!

Danke erstmal. Hat allerdings nur mit einer Batch-Datei geklappt. Ich würde noch etwas gerne per Eventmachen aber das geht leider nicht, denn die Datei (Playlist) soll immer 30 Sekunden vor einer UNGERADEN vollen Stunde eingefügt werden. Ich weiss zumindest nicht, wie ich das in der Eventverwaltangeben müsste.

Man kann die Stunden einzeln auswählen (durch Komma getrennt). Stell die Zeit auf “benutzerdefiniert” und trage ein:

Stunde: 0,2,4,6,8,10,12,14,16,18,20,22
Minute: 59
Sekunde: 30

Fertig.

Man bin ich blöd, das wäre der einfachste Weg… patsch. Es ist übrigens ein Bugreport unterwegs… Ich nehme an, das hängt mit den Scripts zusammen.

Vermutlich. Solange das per ShellExecute gestartete Programm läuft, hängt die mAirList-GUI, und irgendwann ist dann das Debug-Tool der Meinung, die Anwendung sei eingefroren.

Wie doof kann man sein… ich hatte in den Dateien zur Überprüfung überall noch den “pause”-Befehl drin… Nun scheints zu laufen.

@Serge: Umbenennen von cmd in exe geht nicht, zumindest bei Win 7 nicht. Und wie ich aus einer cmd-Datei eine exe zaubere geht grad über meinen Horizont… :wink:

Und die in Antwort #286 genannte Variante (cmd.exe mit Parameter) geht auch nicht?

Komischerweise nicht… aber ich werd’s nochmal probieren.

Nö, bisher nur mit Batchdatei.

Hallo Torben,

ich teste auch den automatischen Download unserer Werbung. Habe bisher mit der Werbung.mls:

begin
ShellExecute(‘werbung.bat’, ‘’);
end.

und der Werbung.bat:

@echo off
C:\werbungscript-v4-rmnradio\rmnradio.cmd

folgendes Ergebnis:

Wenn ich dasEvent aus der Eventverwaltung heraus mit “Ausführen” starte läuft alles problemlos. Die Werbung wird heruntergeladen und mAirList läuft vollkommen normal und probleamlos weiter.

Starte ich es aber mit einer automatischen Zeiteinstellung: jede Stunde 22—00, lädt auch die Werbung herunter, aber mAirList bleibt sofort stehen, Uhr steht, läßt sich nicht mehr bedienen. Der laufende Titel im Player läuft zu Ende aber der nächste Player läßt sich nicht mehr starten. Wäre natürlich tödlich on Air. Auch die Cartwall ist tot und es erscheint nach einer geraumen Weile ca. 2 Min. die Meldung:

The Application seems to be frozen. Den bugreport.txt habe ich hier angehängt.


bugreport.txt (29.8 KB)

Am Callstack sieht man eindeutig, dass der ShellExecute-Aufruf hängt:

MessageThread TPlaybackControl ($f30): <priority:-1>
7e3792de +044 USER32.dll                                SendMessageW
773bb055 +026 comctl32.dll                              #341
7e6b9ba9 +057 shell32.dll                               #99
7e6b99cd +062 shell32.dll                               ShellExecuteExW
7e6f0fbd +108 shell32.dll                               ShellExecuteEx
7e6f1244 +064 shell32.dll                               ShellExecuteA
004faa10 +050 mAirList.exe PlatformIntf         94   +1 ShellExecute
009784ed +049 mAirList.exe CoreScriptPlugins   195   +2 TCoreScriptPlugin.ShellExecute

Bist du dir sicher, dass das Programm sich ordentlich beendet hat?

Vielleicht liegt es daran, dass der Aufruf aus einem Hintergrundthread heraus stattfindet. Ich müsste mal die MSDN-Doku konsultieren.

Ich schick Dir mal per Mail die zugehörige .cmd

Danke, aber was soll ich nun damit? Die wird bei mir eh nicht laufen.