Einfaches 3-zeiliges AppleScript - Fehler -128


1

Ich habe ein Szenario, in dem ich zwei separate Äpfel haben möchte.

Die Idee ist super einfach. 2 Anwendungen, es wird jedoch immer nur eine ausgeführt.

Beispiel: Anwendung 1 schließen, Anwendung 2 starten (und umgekehrt)

Hier sind die 2 Skripte, die ich habe:

A.) OpenSteam

tell application "Plex Home Theater" to quit
delay 5
tell application "Steam" to activate

B.) OpenPlex:

tell application "Steam" to quit
delay 5
tell application "Plex Home Theater" to activate

Das Skript "OpenSteam" funktioniert einwandfrei. Es macht genau das, was ich will. Dasselbe umgekehrte Skript (OpenPlex) scheint jedoch nicht zu funktionieren.

Steam wird geschlossen, aber mein Skript gibt dann die folgende Fehlermeldung aus * Hinweis, Plex wird nicht gestartet:

error "Steam got an error: User canceled." number -128

Ich habe keine Ahnung, was das bedeutet, und hoffte, dass mir jemand helfen könnte.

-

Ich habe meine ersten Informationen hier erhalten: https://forums.plex.tv/index.php/topic/27945-harmony-one-custom-command/#entry179765 Ich habe die Beispielskripte überarbeitet, um sie meinen Bedürfnissen anzupassen.

Antworten:


2

Ihre Kopfschmerzen hängen davon ab, wie Steam mit seinem Ausgangsstatus umgeht. Da Steam wahrscheinlich keine Applescript-Integration hat, betrachtet es einen quitBefehl von Applescript als einen unsauberen Exit. Es würde immer noch aufhören, aber es wird Sie darüber informieren. Was Sie brauchen, ist eine Möglichkeit, die Fehlermeldung zu ignorieren und den Rest des Skripts trotzdem auszuführen.

try
    tell application "Steam" to quit
    on error error_message number error_number
        if error_number is equal to -128 then
        --Keep Calm and Carry On
        else
            display dialog error_message
        end if
end try
delay 5
tell application "Plex Home Theater" to activate

Sie können die beiden Skripte zu einem Toggle / Switch kombinieren:

set steamRunning to false
set plexRunning to false

try
    do shell script "pgrep -l -f 'Steam.app'"
    set steamRunning to true
end try

try
    do shell script "pgrep -l -f 'Plex Home Theater'"
    set plexRunning to true
end try

if steamRunning is true and plexRunning is false then

    try
        tell application "Steam" to quit
    on error error_message number error_number
        if error_number is equal to 128 then
            --Keep Calm and Carry On
        else
            display dialog error_message
        end if
    end try
    delay 5
    tell application "Plex Home Theater" to activate

end if


if steamRunning is false and plexRunning is true then

    tell application "Plex Home Theater" to quit
    delay 5
    tell application "Steam" to activate

end if

Ich habe keine der beiden Apps und kann daher nicht debuggen. Es könnte mehrere Prozesse mit dem Namen "steam" geben, vorausgesetzt, das ist der App-Name unter dem ich "Steam.app" verwendet habe /Applications/.


Wow, danke für diese Vorschläge. Wenn ich die Gelegenheit dazu bekomme, werde ich das testen und sehen, wie es läuft.
Level42

Also musste ich "wenn error_number gleich -128 ist, dann" machen, sonst würde das Skript anhalten und mir einen "Anzeigedialog error_message" geben. Ansonsten scheint das Skript jetzt großartig zu funktionieren! Ich muss die Skripte getrennt halten, da sie beim Hinzufügen zu meiner Harmony-Fernbedienung separate Aufgaben sind.
Level42

0

Hast du es versucht...

launch application "Plex Home Theater"

Die Aktivierung der Anwendung "Plex Home Theater" funktioniert. Wenn ich das Skript "OpenPlex" erneut starte, nachdem Steam geschlossen wurde, wird Plex geöffnet. Das Skript wird beim Schließen von Steam angehalten, was das Problem ist.
Ebene 42
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.