AppleScript: Köra programmet i bakgrunden?

Tråden skapades och har fått 12 svar. Det senaste inlägget skrevs .
1

Jag har ett AppleScript som synkar datorn med telefonen. Men när det kör igång iSync så läggs iSync främst - lite lätt irriterande när man sitter och skriver.
Finns det något sätt att få programmet att starta i "bakgrunden". Alltså inte främst?

Skriptet ser ut så här idag:

tell application "iSync"
	activate
	synchronize
	repeat
		if not syncing then exit repeat
	end repeat
	quit
end tell
  • Medlem
  • Mölndal
  • 2007-06-07 12:00

Du kan inte först starta programmet och sedan gömma det? "tell iSync to go hide itself"...

Frågan är ju annars vad som menas med "i bakgrunden". Är det bakom alla andra program med synliga fönster?

Nu har jag inte nån applescript referens framför mig, men kan man inte göra ngt i stil med...

tell application "system events" to keystroke "H" using command down

...någonstans innanför Tell statementet för iSync?

  • Medlem
  • Stockholm
  • 2007-06-07 15:33
Ursprungligen av Mattias Hedman:

Jag har ett AppleScript som synkar datorn med telefonen. Men när det kör igång iSync så läggs iSync främst - lite lätt irriterande när man sitter och skriver.
Finns det något sätt att få programmet att starta i "bakgrunden". Alltså inte främst?

Skriptet ser ut så här idag:

tell application "iSync"
	activate
	synchronize
	repeat
		if not syncing then exit repeat
	end repeat
	quit
end tell

Ta bort raden med activate!

Vänligen, Ylan

  • Medlem
  • Stockholm
  • 2007-06-07 15:50

Om det finns intresse, kan jag lägga upp mitt skript som slår på, och efteråt av Bluetooth också!

Vänligen, Ylan

Ursprungligen av Ylan:

Ta bort raden med activate!

Vänligen, Ylan

Ahh perfekt!
Då blev precis som jag ville ha det.

Creops var roligt det med.

  • Medlem
  • Gävle
  • 2007-06-07 15:59

Såhär ser mitt iSync script ut, säkert någon som känner igen delar av det.
...........

set theTell to "Start sync"

-- Do the sync and wait for it to finish
tell application "iSync"
	if last sync is less than ((current date) - 72000) then
		say theTell
		synchronize
		tell application "System Events" to set visible of process "iSync" to false
		repeat while (syncing is true)
			delay 5
		end repeat
		set syncStatus to sync status
		
		if syncStatus = 2 then
			-- Success
			say "sync is done"
			quit
		else
			if syncStatus = 3 then
				set syncStatus to "completed with warnings"
			else if syncStatus = 4 then
				set syncStatus to "completed with errors"
			else if syncStatus = 5 then
				set syncStatus to "last sync cancelled"
			else if syncStatus = 6 then
				set syncStatus to "last sync failed to complete"
			else if syncStatus = 7 then
				set syncStatus to "never synced"
			end if
			say "Error in syncing"
			display dialog "syncStatus: " & syncStatus
		end if
	else
		quit
	end if
end tell
  • Medlem
  • Stockholm
  • 2007-06-07 17:37

Då Creops skript är mer utvecklat än mitt, lägger jag bara ut min Bluetooth på- och avslagarrutin. Den tar argumentet shouldBeOn, som skall vara true om rutinen skall slå på Bluetooth och false om den skall slå av!

on toggleBluetooth(shouldBeOn) --Slå på och stäng av Bluetooth, om shouldBeOn är true, slår rutinen på, om shouldBeOn är false, slår den av. OBS! måste modifieras om det skall köras på maskiner med annat än svenskt system!
	
	tell application "System Events" to tell the front menu bar of process "SystemUIServer"
		set menu_extras to value of attribute "AXDescription" of menu bar items
		repeat with x from 1 to the length of menu_extras
			if item x of menu_extras is "bluetooth menu extra" then exit repeat
		end repeat
		tell menu bar item x
			click
			tell 2nd menu item of front menu
				if shouldBeOn is true and name begins with "Sl" then -- "Sl" som i "Slå på"
					click
					
				else if shouldBeOn is false and name begins with "St" then -- "St" som i "Stäng av"
					click
					
				else --Om Bluetooth redan är på stängs menyn med Escape
					tell application "Finder" to activate
					tell application "System Events"
						keystroke escape key
					end tell
					
				end if
				return
			end tell
		end tell
	end tell
end toggleBluetooth

Vänligen, Ylan

  • Medlem
  • Gävle
  • 2007-06-08 08:55

Mitt är till största delen snott, men jag har lagt in ljuden och finat till det lite. Jag gillar att den säger tillnär den gör synkningen så man inte går iväg. Sen gör den bara en synkning var 20de timmer vilket blir i princip en gång per dag.

  • Medlem
  • Mölndal
  • 2007-06-08 09:04

Får man fråga hur du gjorde valet "20e timme"? Jag skulle tycka det var lite jobbigt att det blev en ny tidpunkt varje dag?

  • Medlem
  • Gävle
  • 2007-06-08 09:08
Ursprungligen av memark:

Får man fråga hur du gjorde valet "20e timme"? Jag skulle tycka det var lite jobbigt att det blev en ny tidpunkt varje dag?

På rad:
if last sync is less than ((current date) - 72000) then

72000 sekunder är lika med 20 timmar.
det betyder att om förra synkninken skedde för mer än 20 timmar sen så synka igen, det blir väldigt dynamiskt då. Typ alltid först på dagen eller när den kan.

  • Medlem
  • International user
  • 2007-06-11 14:03

Smart.

Jag igen har använt ical för att sätta igång syncningen. 3 ggr per dag. Morgonen innan jag vaknar, kvällen när jag antagligen är hemma och sen igen lite senare mot natten.

Senast redigerat 2007-06-11 14:38
  • Medlem
  • Mölndal
  • 2007-06-11 14:55

Tar synkningen lång tid? Slöar den ner?

Om inte skulle jag köra den betydligt oftare. Min telefon synkar jag i dagsläget var 5e minut. Då slipper man hamna i situationer där man tror man är ledig men i själva verket har bokat in något som inte synkats ännu t ex.

1
Bevaka tråden