Scripta extramenyer

Tråden skapades och har fått 8 svar. Det senaste inlägget skrevs .
1
  • Medlem
  • Stockholm
  • 2007-01-16 13:39

Bästa skriptare,

jag vill slippa slå av och på Bluetooth när jag synkar min telefon, och undrar hur jag kommer åt Bluetoothmenyn från Applescript. Jag får tag i menyerna till vänster, men ej extramenyerna till höger. Vet någon hur man gör, eller var man kan få reda på hur man gör?

Jag har kikat i propertylistan för Bluetooth och hittat inställningen för synlig och osynlig, men ej för av och på!

Vänligen, Ylan

Fick för mig att det skulle gå genom ett shellscript av typen defaults write com.apple.Bluetooth ControllerPowerState och sedan 1 eller 0. Men det verkar inte funka, inte med sudo framför heller så det verkar inte stämma längre.

En väg skulle kanske vara att stänga ner Bluetooth-processen? Typ killall blued och sedan starta den igen när den behövs?

Hursomhelst, så borde det förstås funka att gå bakvägen genom systeminställningarna. Ungefär såhär;

tell application "System Preferences" to set current pane to pane "Bluetooth"
tell application "System Events"
tell process "System Preferences"
try
click radio button 1 of tab group 1 of window 1
click button 1 of tab group 1 of window 1
end try
end tell
end tell

  • Medlem
  • Stockholm
  • 2007-01-16 17:00
Ursprungligen av Merovech:

Fick för mig att det skulle gå genom ett shellscript av typen defaults write com.apple.Bluetooth ControllerPowerState och sedan 1 eller 0. Men det verkar inte funka, inte med sudo framför heller så det verkar inte stämma längre.

En väg skulle kanske vara att stänga ner Bluetooth-processen? Typ killall blued och sedan starta den igen när den behövs?

Hursomhelst, så borde det förstås funka att gå bakvägen genom systeminställningarna. Ungefär såhär;

tell application "System Preferences" to set current pane to pane "Bluetooth"
tell application "System Events"
tell process "System Preferences"
try
click radio button 1 of tab group 1 of window 1
click button 1 of tab group 1 of window 1
end try
end tell
end tell

Det borde ju fungera, men jag tänkte att det skulle bli elegantare om man sluppe System Preferences över halva skärmen!

Finns det någon UIInspector som fungerar på Intelmac?

Vänligen, Ylan

Jo, det borde det ju bli. uiBrowser är bra.
Det finns en 30-dagars demo.

Nytt försök.

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
click
return
end tell
end tell
end tell

  • Medlem
  • Stockholm
  • 2007-01-16 18:45
Ursprungligen av Merovech:

Nytt försök.

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
click
return
end tell
end tell
end tell

Bugar och bockar ända ner till golvet! Det finns så otroligt mycket att lära sig, och visst blir din senare lösning elegantare än den förra!

Vänligen, Ylan

  • Medlem
  • Stockholm
  • 2007-01-16 21:37

Bifogar mitt skript, vilket ser ut att fungera. Det tar hänsyn till att Bluetooth eventuellt är påslaget. Fungerar endast med svenskt system!

Skriptet slår på Bluetooth om det ej redan är på, startar iSync, synkroniserar, och slår därpå av Bluetooth. Det reagerar på om synkroniseringen avbryts, men ej på om telefonens Bluetooth är avstängt.

Kommentera gärna dumma lösningar eller problem!

Dessvärre tappar 99mac indenteringen, så klistra in skriptet i Manusredigerare och kompilera det!

Tack för hjälpen Merovech!

Vänligen, Ylan

Citat:

global shouldBeOn --Om Bluetooth skall vara på eller av

set shouldBeOn to true -- Bluetooth skall vara på

toggleBluetooth()

tell application "iSync"
synchronize
repeat while syncing is true
delay 5
end repeat
if not sync status = 2 then
display dialog "Synkroniseringen misslyckades"
end if
quit
end tell

set shouldBeOn to false
toggleBluetooth()

on toggleBluetooth() --Slå på och stäng av Bluetooth

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

  • Medlem
  • 2007-01-16 21:48

Ett annan alternativ är att ladda ner och installera det lilla kommandoradsprogrammet
blueutil, och sedan scripta med

do shell script "blueutil on"

  • Medlem
  • Stockholm
  • 2007-01-17 13:40
Ursprungligen av wlao:

Ett annan alternativ är att ladda ner och installera det lilla kommandoradsprogrammet
blueutil, och sedan scripta med

do shell script "blueutil on"

Cool!

Vänligen, Ylan

1
Bevaka tråden