Applescript: vänta på att program har avslutats?

Tråden skapades och har fått 9 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • 2007-04-20 15:05

Jag har ett skript som gör en grej med InDesign-mappen. Jag vill lägga till

tell application "Adobe InDesign CS2" to quit

men jag vill också att skriptets nästa åtgärd väntar på att InDesign är avstängt innan det slänger upp en dialogruta. Jag vill också attdetta ska passera obemärkt om InDesign inte är igång.

Hur gör jag? Jag hittar inget på Google eftersom jag inte vet riktigt vad jag ska söka på.

  • Medlem
  • Mölndal
  • 2007-04-20 15:10

Detta låter mycket bekant! Har vi inte haft en tråd om typ detta rätt nyligen?

Ditt första problem är inget problem alls.

I princip funkar AppleScript såhär: En begäran skickas till InDesign att InDesign ska avslutas och i de flesta fall går inte AppleScript vidare innan ett giltigt svar, i det här fallet av typen "Indesign har avslutats" har returnerats.

Likaså är AppleScript smart nog att inte starta InDesign för att utfärda "Quit" om InDesign redan är avslutat. Innehåller scriptet däremot andra InDesign-kommandon kan man inte lita på den logiken.

Då kontrollerar man istället om InDesign är igång innan man exekverar resten av scriptet. Såhär:

tell application "System Events"
	if (name of processes) contains "Adobe InDesign CS2" then
		set myInDesignRunningBoolean to true
	else
		set myInDesignRunningBoolean to false
	end if
end tell


if myInDesignRunningBoolean is true then
	
	--kör resten av din kod här
	
end if
  • Medlem
  • 2007-04-20 18:48

Tack Richard, men klipper jag in din kod i mitt skript händer inte ett skit.

Jag pm:ar min kod så får du se vad det är.

Är det inte dags att ta kursen med mig så du inte suger allt blod gratis från RR?

Jag testade din kod Richard och jag avslutar ett program och startar ett annat direkt efter och AppleScriptet går vidare till startandet av program 2 innan program 1 är avslutat.
Bara så du vet.
Nu ska jag hem och läsa en Ruby bok.

  • Medlem
  • 2007-04-20 20:15

Äh, jag köper skript av Richard i stället.

Mattias, om du läser mitt svar så ser du att jag skriver "i de flesta fall". Jag giter inte förklara alla varianter på beteendet just nu, men i grunden så handlar det om vad "quit" betyder. I korta drag är det en begäran om att avslutningen ska initieras, precis som när du väljer det från Arkivmenyn, eller slår Cmd+Q. Hur programmet sen ska göra innan det returnerar svaret är upp till programmakaren att avgöra.

Ahhh ok. Det förklarar saken. Tack då vet jag.
Går det att lägga in någon slags koll att programmet verkligen är avslutat innan jag startar nästa? Kan jag göra en metod med detta innehåll?

function (VARIABEL)
tell application "System Events"
	if (name of processes) contains "VARIABEL" then
		set myInDesignRunningBoolean to true
	else
		set myInDesignRunningBoolean to false
	end if
end tell

Och utdata är true eller false?

Ja i princip, men syntaxen måste putsas lite

1
Bevaka tråden