Tek bir oluşan Otomator Servis "AppleScript Çalıştır" aksiyon. AppleScript temel olarak bir dizi iletişim kutusundan oluşur.
Komut dosyasının ortasında, komut dosyası tuş vuruşuna dayanır ⌘ komutu + C Seçilen zengin metni komut dosyasına eklemek için the clipboard
. Kullanıcı, gerçek panoyu ilk iletişim kutusuna yapıştırmak isteyebileceğinden, bu kopyalama komutunun betiğin ortasına düşmesi gerekir.
Hizmetler'deki AppleScript iletişim kutuları varsayılan olarak tüm pencerelerin üstüne sabitlenir; bunu değiştiremezsin.
AppleScript yalnızca tuşa basabilir ⌘ komutu + C altta yatan uygulama odaktayken, mantıklı olan, seçili metni içeren, altta yatan uygulama olduğu (komut dosyası iletişim kutusu değil) olduğu düşünülür.
Bu yüzden sorumumu kararsız bir şekilde koyacağım: Pencerenin üst kısmını Servis diyaloğunun hemen arkasına gri yapmanın ve böylece Servis diyaloğunun üst çubuğunu beyaz yapmanın bir yolu var, ancak senaryo diyalog penceresini hala görüntülemiyor. ?
Pencerenin başlığına veya pencerenin uygulamasına giremiyorum, çünkü bu değişkenler değişecektir. Sabit, odağa getirmek istediğim pencerenin daima Servis diyaloğunun hemen arkasında olacağı yönünde.
Aşağıdaki, neden bahsettiğimin bir örneği:
-- Back up original clipboard contents:
set savedClipboard to the clipboard
set optionList to {"Uppercase case"}
set dialogBoxChoice to choose from list optionList with title "Change case of selection" with prompt "Choose a letter case:"
-- Copy selected text to clipboard:
tell application "System Events" to keystroke "c" using {command down}
delay 1 -- Without this, the clipboard may have stale data.
set theSelectedText to the clipboard
-- Makes the selected text all uppercase:
-- From: http://apple.stackexchange.com/a/171196/184907
set theModifiedSelectedText to (do shell script ("echo " & theSelectedText & " | tr a-z A-Z;"))
display dialog theModifiedSelectedText
-- Overwrite the old selection with the desired text:
set the clipboard to theModifiedSelectedText
tell application "System Events" to keystroke "v" using {command down}
delay 1 -- Without this delay, may restore clipboard before pasting.
-- Restore clipboard:
set the clipboard to savedClipboard
Yukarıdaki kodu klavye kısayolu tetiklemeli bir Servise koyarsanız, betiğin tell application "System Events" to keystroke "c" using {command down}
; Böylece, theSelectedText
aynı olacaktır savedClipboard
her zaman.
tell me
choose from list
Açıkça saçma olan sadece bir öğenin. Her neyse, çözümün tamamen sorunumu çözdü. Teşekkürler!