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!