Programm starten, wenn es nicht schon gestartet ist

mindsuk

Granny Smith
Registriert
06.12.10
Beiträge
13
Hallo, leider habe ich über die SuFu nichts gefunden...

Ich möchte ein Programm via AppleScript starten, aber nur, wenn es nicht schon gestartet ist.

Aktuell sieht mein Script so aus:

tell application "Finder"
set Programme to name of (every process whose visible is true) as list
end tell
if Programme contains "Frizzix" then
tell application "Frizzix"
quit
end tell
else
tell application "Frizzix"
activate
end tell
end if

Hoffe jemand kann mir da weiterhelfen.

LG
 

SirFledermaus

Braeburn
Registriert
17.09.09
Beiträge
43
Versuch's mal mit do shell script "ps aux | grep Frizzix | grep -v -c grep"
 

mindsuk

Granny Smith
Registriert
06.12.10
Beiträge
13
Danke, aber wenn das Programm nicht gestartet ist, kommt AppleScript Fehler 0..
 

SirFledermaus

Braeburn
Registriert
17.09.09
Beiträge
43
Na du musst schon auswerten, was das Shellscript zurück gibt. Wenn es nicht gestartet es, dann eine 0 und wenn es gestartet ist, die anzahl wie oft. Bei mir - weil Frizzix nur einmal gestartet ist - entsprechend eine 1. Du musst das schon noch anpassen. Ich könnte es dir ja auch machen, aber dann lernst du ja nichts ;)
 

mindsuk

Granny Smith
Registriert
06.12.10
Beiträge
13
Da hast Du vollkommen recht....nur weiß ich nicht, wie und wo ich die variablen einsetzen muss! Kannst Du mir auf die Sprünge helfen?
 

SirFledermaus

Braeburn
Registriert
17.09.09
Beiträge
43
Moment, ich bau es dir gerade als Bespiel mal fertig. Dann lerne daraus...

Hier dein Script:

Code:
[B]set[/B] [COLOR=#4F8F00]prog[/COLOR] [B]to[/B] "Frizzix"[COLOR=#5E6161]-------------------------------------------------------[/COLOR]


[B]if[/B] [B]my[/B] [COLOR=#4f8f00]checkrun[/COLOR]([COLOR=#4f8f00]prog[/COLOR]) [B]then[/B]
	[B]tell[/B] [COLOR=#0433ff][I]application[/I][/COLOR] "Frizzix" [B]to[/B] [COLOR=#0433ff][B]activate[/B][/COLOR]
[B]else[/B]
	[COLOR=#012fbe][B]display dialog[/B][/COLOR] "Frizzix ist bereits gestartet"
[B]end[/B] [B]if[/B]




[COLOR=#5E6161]-------------------------------------------------------[/COLOR]
[COLOR=#4F8F00][COLOR=#000000][B]on[/B] [/COLOR]checkrun[COLOR=#000000]([/COLOR]prog[COLOR=#000000])[/COLOR][/COLOR]
	[B]try[/B]
		[COLOR=#012fbe][B]do shell script[/B][/COLOR] "ps aux | grep " & [COLOR=#4f8f00]prog[/COLOR] & " | grep -v -c grep"
		[B]return[/B] [COLOR=#5d3292]false[/COLOR]
	[B]on[/B] [B]error[/B]
		[B]return[/B] [COLOR=#5d3292]true[/COLOR]
	[B]end[/B] [B]try[/B]
[COLOR=#000000][B]end[/B] [/COLOR][COLOR=#4F8F00]checkrun[/COLOR]
 

SirFledermaus

Braeburn
Registriert
17.09.09
Beiträge
43
Formatierung hier ist komisch geworden, bekommst du aber bestimmt hin. Außerdem kannst du natürlich den Else-Zweig weglassen und damit den Hinweis ausblenden.

Du kannst auch durch das Ändern der Variable ganz am Anfang das Script auch für jedes andere Programm nutzen..
 

mindsuk

Granny Smith
Registriert
06.12.10
Beiträge
13
Super! Vielen Dank!! Funktioniert bestens! Das hätte ich wirklich nicht hinbekommen. Kannst Du mir eventuell noch einen guten Lesestoff zum Thema AppleScript empfehlen?

Gute Nacht!
 

Kernelpanik

Herrenhut
Registriert
05.03.04
Beiträge
2.300
Der Beitrag ist zwar schon etwas älter aber ich möchte doch noch eine elegante Lösung schreiben:
Code:
if application "NameDerApp" is not running then activate application "NameDerApp"
Umgekehrt geht auch:
Code:
if application "NameDerApp" is running then quit application "NameDerApp"
Als Schalter (toggle):
Code:
if application "NameDerApp" is not running then
   activate application "NameDerApp"
else
   quit application "NameDerApp"
end if
 
  • Like
Reaktionen: ImpCaligula