Programm beenden, wenn es läuft, und wieder starten

Tim Feddern

Tim Feddern

Aktives Mitglied
Thread Starter
Dabei seit
10.02.2007
Beiträge
216
Reaktionspunkte
0
Hallo,

ich möchte ein Programm beenden, wenn es läuft, und wieder starten.
Wenn ich es so beende, es aber nicht läuft, gibt es einen Fehler und so wird der nächste Schritt nicht ausgeführt, das Starten.

if ... then? Oder wie geht das?

Ich habe hiervon keine Ahnung, finde das Skript aber schon super!

Grüße
Tim ;)
 
was sind denn da wieder für Drogen in Hamburg im Umlauf???? :hamma:

Grüsse
 
  • Gefällt mir
Reaktionen: Tim Feddern
@Tim
Evtl. würden wir es anhand eines Struktogrammes besser verstehen was Du meinst!? :confused: :confused: :confused:
 
  • Gefällt mir
Reaktionen: Tim Feddern
Für mich ist das ganz klar. Aber ich bin wohl bekloppt ;).


Wenn „last.fm“ läuft, dann beende „last.fm“, sonst starte „last.fm“!
(Das wäre ein "if ... then ... else ..."-Befehl)


Kennt ihr „last.fm“? Es ist eine Art Internetradio. Man gibt ein welche Art
Musik man hören will. Dann schaltet das Programm einen passenden
Sender für dich ein. Komplett ohne Werbung. www.lastfm.de

Warum ich das Programm erst beenden will, falls es läuft:
Ich möchte das Internetradio als Wecker benutzen. Ich schalte den Mac
per Fernbedienung aus dem Bett heraus aus. Er schläft also mit mir ;).

Dann soll ein Weckprogramm, wie z.B. Awaken dieses Skript ausführen.
Wenn ich nun am Abend mit der Musik von "last.fm" eingeschlafen bin
und ich den Mac in den Sleepmodus versetze und ihn morgens wieder
aufwachen lasse, funktioniert das Radio nicht mehr. Ich muss das Radio
entweder Stoppen und wieder abspielen lassen (Buttons), oder es
beenden und neu starten.

Ich hoffe, dass ihr nun versteht, warum ich ein Programm beenden will, falls es läuft ;).

Grüße
Tim
 
Dein Script solltest du hier ruhig zeigen. Möglich wäre beispielsweise
Code:
tell application "System Events"
	if exists process "last.fm" then
		tell application "last.fm" to quit
		delay 1
		tell application "last.fm" to activate
	else
		tell application "last.fm" to activate
	end if
end tell
 
  • Gefällt mir
Reaktionen: Tim Feddern
Das delay ist in dem fall wichtig, da es sonst zu Problemen kommen kann wenn das programm noch nich beendet ist aber schon wieder starten soll. Vllt ein bisschen mit der Delay time "rumspielen" (hoffentlich wird dein Mac da nicht eifersüchtig wenn dus chon mit ihm schläfst ;) ).
MFG
 
  • Gefällt mir
Reaktionen: Tim Feddern
Hallo,

danke Gerundium! ich beherrsche kein bisschen Skriptsprache!

Code:
on run {input, parameters}
    
    tell application "System Events"
        if exists process "Last.fm" then
            tell application "Last.fm" to quit
            delay 5
            tell application "Last.fm" to activate
        else
            tell application "Last.fm" to activate
        end if
    end tell
Bei dem obigen Skript passiert nichts, außer, dass Last.fm in den Vordergrund geholt wird, wenn es läuft.
 
OK, anscheinend reagiert LastFM ein wenig gereizt auf den "quit"-Befehl, dann schleichen wir uns eben von hinten an ;)
Code:
tell application "System Events"
	if exists process "Last.fm" then
		tell application "Last.fm" to activate
		keystroke "q" using {command down}
		delay 2
		tell application "Last.fm" to activate
	else
		tell application "Last.fm" to activate
	end if
end tell
 
  • Gefällt mir
Reaktionen: Tim Feddern
Auch mit dem Keystroke gehts nicht. Last.fm kommt in den Vordergrund, mehr nicht.

Wenn Last.fm nicht läuft startetet er es anstandslos. Nur das Beenden klappt nicht.
Ih werde mal ein anderes Programm testen.

Edit 1:

Perfekt. Mit TextEdit gehts!

Code:
on run {input, parameters}
    
    tell application "System Events"
        if exists process "TextEdit" then
            tell application "TextEdit" to quit
            delay 5
            tell application "TextEdit" to activate
        else
            tell application "TextEdit" to activate
        end if
    end tell
 
Warum musst du Last.fm nach dem Ruhezustand beenden? Ist es eingefroren?
 
  • Gefällt mir
Reaktionen: Tim Feddern
Sozusagen, ja. Die Verbindung zum Server, dem Internetradio, der die Musik abgespielte, wurde unterbrochen.
Um geweckt zu werden brauche ich aber diese Musik ;).

Aber warum geht es mit anderen Programmen?

Edit 1:
So wird Last.fm erfolgreich beendet:
Code:
on run {input, parameters}
    
    tell application "Last.fm" to quit
    return input
end run
Dann gibt es aber trotzdem einen AppleScript Error:
"Last.fm" hat einen Fehler Erhalten. Es sit ein Fehler "-9874" aufgetreten.

Was bedeutet das nun?
 
Zuletzt bearbeitet:
Teste das keystroke-Skript (#8) mit TextEdit, funktioniert es?
 
  • Gefällt mir
Reaktionen: Tim Feddern
Ja, das geht mit TextEdit ;).
 
Dann sollte es auch in Verbindung mit Last.fm funktionieren. Schade, denn mit den keystrokes könnten das Beenden und der Neustart durch Stopp und Play ersetzt werden:
Code:
tell application "System Events"
	if exists process "Last.fm" then
		tell application "Last.fm" to activate
		keystroke "s" using {command down}
		delay 2
		keystroke "p" using {command down}
	else
		tell application "Last.fm" to activate
	end if
end tell

Wenn du schnell ein Ergebnis möchtest, können wir zu schmutzigen Tricks greifen:
Code:
tell application "System Events"
	if exists process "Last.fm" then
                try
		tell application "Last.fm" to quit
		end try
		delay 2
		tell application "Last.fm" to activate
	else
		tell application "Last.fm" to activate
	end if
end tell
 
  • Gefällt mir
Reaktionen: Tim Feddern
Die Keysroke-Lösung mit S und P wäre wirklich die vornehmste.
Aber auch die "schmutzige" Lösung funktioniert nicht. Last.fm wird in der Symbolleiste (ganz oben - Datei - Bearbeiten usw.) hervorgehoben, aber nicht beendet.
 
Du hast irgendein Problem mit dem Player, das ich hier nicht nachvollziehen kann.
 
  • Gefällt mir
Reaktionen: Tim Feddern
Hast du auch Last.fm? Geht es bei dir?

Wenn die Keystrokes angewendet werden, leuchten die Wörter in der Symbolleiste blau auf und die Untermenüs klappen kurz kurz, oder?
 
Man kann einen Prozess doch auch sofort, also brutal, per Aktivitätsanzeige (Taskmanager) beenden. Geht das hier auch?
 
Ja, ich hatte mir – nachdem das erste Skript nicht funktionierte – das Teil heruntergeladen. Hier funktioniert es tadellos. Im ScriptEditor und auch (wie bei dir) in Automator.

Und ja, das Programm lässt dich auch abschießen. Aber irgendetwas ist bei dir im Argen. Kannst du das Programm via Tastatur oder Maus beenden/bedienen – oder musst du es immer gewaltsam beenden?
 
  • Gefällt mir
Reaktionen: Tim Feddern
Ich kann es durchaus per Apfle+q u.s.w. beenden. Problemlos.
Ich lade mir nochmal die Software runter.

Edit 1:
Die "Neuinstallation" bringt auch nichts.
Wäre es sonst mit "Shell-Scrips" zu managen?
 
Zuletzt bearbeitet:
Zurück
Oben Unten