Z następującym kodem AppleScript w ramach akcji „Uruchom AppleScript” w usłudze:
tell application "System Events"
set theSBounds to {{572, 64}, {332, 515}}
set position of window "Google Hangouts - [email protected]" of application process "Google Chrome" to item 1 of theSBounds
set size of window "Google Hangouts - [email protected]" of application process "Google Chrome" to item 2 of theSBounds
end tell
Usługa będzie działać tylko wtedy, gdy aplikacja, z której została wywołana, została dodana do listy aplikacji w „Zezwól aplikacjom poniżej na kontrolowanie twojego komputera”. Ta lista znajduje się w Preferencjach systemowych → Bezpieczeństwo i prywatność → Dostępność.
Czy można w jakiś sposób zmodyfikować kod AppleScript, aby dodawanie każdej aplikacji na komputerze do listy nie było konieczne? A może wystarczy dodać jeden element do listy, w przeciwieństwie do każdej aplikacji na komputerze?
Myślałem, że coś takiego może działać:
do shell script "osascript -e 'tell application \"System Events\"' -e 'set theSBounds to {{572, 64}, {332, 515}}' -e 'set position of window \"Google Hangouts - [email protected]\" of application process \"Google Chrome\" to item 1 of theSBounds' -e 'set size of window \"Google Hangouts - [email protected]\" of application process \"Google Chrome\" to item 2 of theSBounds' -e 'end tell'" with administrator privileges
ale ten kod wymaga również, aby aplikacja, z której uruchomiono usługę, została dodana do listy ułatwień dostępu.
Uwaga: Chcę uruchamiać ten AppleScript tylko jako usługę, a nie w aplikacji utworzonej przez Automatora, ponieważ kod odbiera zaznaczony tekst jako jego dane wejściowe (ogólnosystemowe).
źródło
Odpowiedzi:
Znalazłem dobre rozwiązanie (tj. Obejście).
Wstaw blok kodu „Zdarzenia systemowe” do akcji „Uruchom AppleScript” i zapisz go jako własny plik aplikacji w Automatorze. Uwaga: rozszerzenie pliku tego kodu musi mieć rozszerzenie .app, aby działało (więcej o tym za chwilę).
Przejdź do Preferencji systemowych → Bezpieczeństwo i prywatność → karta Prywatność → Dostępność. Dodaj i zaznacz nowo utworzoną aplikację do listy aplikacji, które mogą kontrolować Twój komputer.
Uruchom nowo utworzoną aplikację z poziomu swojej usługi. Aby to zrobić, możesz dodać następujący wiersz do kodu AppleScript:
(I zwykle wykorzystywać
osascript
doactivate
zastosowań przy użyciu „Uruchom AppleScript” działania w serwisie, ponieważ omija się błąd z usług, które odkryłem .)Twoja usługa powinna teraz działać idealnie w każdej aplikacji na twoim komputerze, pomimo faktu, że tylko jedna aplikacja (ta, która zawiera kod „zdarzeń systemowych”) została wyraźnie upoważniona do sterowania komputerem.
Plik musi zostać zapisany jako plik .app, a nie jako plik .scpt lub .applescript. Wynika to z faktu, że nie można dodawać plików .scpt ani .applescript do listy aplikacji, które mogą kontrolować komputer; w oknie dialogowym można wybrać tylko prawdziwe pliki .app.
Pamiętaj, że pliku .app nie trzeba tworzyć w Automatorze. Jeśli utworzysz plik .app w Script Editor.app i wykonasz pozostałe kroki, plik .app będzie działał w ten sam sposób.
Jest jednak jedna różnica. Po utworzeniu pliku .app w Automatorze można użyć jednego z nich
activate
lublaunch
uruchomić aplikację w ich usłudze. Ale gdy plik .app zostanie utworzony w edytorze skryptów, można go użyć tylkoactivate
do uruchomienia aplikacji;launch
spowoduje, że nic się nie wydarzy.źródło