ShellExecute mit Inhalt aus einer einzigen Variablen

  • Hallo zusammen,

    ich hoffe, jemand kann mir bei meinem Problem weiter helfen. Ziel ist es ein ShellExecute durchzuführen, bei dem der gesamte Ihnalt ein einer einzigen Variablen enthalten ist. Um es anschaulicher zu machen:

    Code
    ShellExecute('C:\Program Files\VideoLAN\VLC\vlc', 'http://192.168.0.103:8080/x.mp3')


    funktioniert.

    Code
    $a = "'C:\Program Files\VideoLAN\VLC\vlc', 'http://192.168.0.103:8080/x.mp3'" 
    ShellExecute($a)

    funktioniert aber leider nicht.

    Habe schon alle möglichen Varianten probiert, aber nichts hat funktiniert.

    Weiss hier jemand Rat?

  • Weißt du was das X-Y-Problem ist?
    Es tritt sehr häufig in Foren wie diesem auf und man kann es ungefähr so beschreiben:

    • Ein User möchte X erreichen.
    • Er glaubt die Lösung des Problems wäre Y.
    • Da es dabei Probleme gibt stellt er eine Frage Y betreffend aber ohne X zu erwähnen.
    • Auch wenn für die Helfenden Y ziemlich schräg erscheint bemühen sich alle irgendwie Y hinzubiegen.
    • Effektiver wäre es aber gewesen die Fragestellung von Anfang an anders zur formulieren: Ich möchte X erreichen dazu habe ich schon Y probiert aber noch immer nicht das gewünschte erreicht.

    Dein Y ist die ziemlich schräge Fragestellung mehrere Parameter aus einer Variable aufzulösen.
    Dein X kennen wir hingegen nicht...

    Eins schonmal vorweg: eine Argument-Expansion wie in Python gibt es in Autoit nicht.

  • Ich wollte es nur nicht verkomplizieren. Also, es geht darum, den VLC Media Player auf einem anderen Computer zu öffnen mit einem zu übergebenden Zeilenparameter.

    Auf dem gleichen PC würde man in der Kommandozeile Folgendes schreiben:

    Code
    ShellExecute('C:\Program Files\VideoLAN\VLC\vlc', 'http://192.168.0.103:8080/x.mp3')


    Nun ist es aber so, dass sich auf PC1 der client und auf PC2 der Server befindet. Der Server wartet auf eine Variable, diese sei $a und sobald die empfangen wird, wird mit dieser ein ShellExecute ausgeführt. Daher steht eben nur eine Variable zur Verfügung, die den gesamten Inhalt enthalten muss.

    Ist damit die Frage beantwortet?

  • Nur ein Beispiel von vielen:


    AutoIt
    $a = "'C:\Program Files\VideoLAN\VLC\vlc', 'http://192.168.0.103:8080/x.mp3'"
    $a_Split = StringRegExp($a, "(?>'(.+?)'|""(.+?)"")", 3)
    
    
    ShellExecute($a_Split[0], $a_Split[1])

    Interessanter wäre hingegen die Frage warum die übergebene Variable genau in dieser Form vorliegen muss?
    Wenn du Einfluss auf deren Formatierung hast dann mach doch einen Run()-kompatiblen String draus. Dann hast du auch deinen Einparameter-Aufruf erreicht.

  • Also mit dem Run-Befehl hat es funktinoiet. Allerdings habe ich ein anderes seltsames Phänomen festgestellt, das ich in der Form so noch nie hatte.

    Wenn der Server von irgendeinem Verzeichnis aus gestartet wird, dann funktioniert der Run-Befehl.

    Wenn der Server infolge des Restarts des PCs aus dem Startup-Ordner heraus gestartet wird, funktioniert der Run-Befehl nicht.

    Woran könnte das liegen, dass der Run-Befehl aus dem Autostart Ordner heraus nicht funktioniert und aus irgendeinem "normalen" Ordner heraus nicht?

  • Nett ist es wenn man einen Beitrag auf gelößt setzt. Das schaftt Übersicht


    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)