Получить текст с текущей позиции курсора из приложения Pages в Mac - PullRequest
0 голосов
/ 26 декабря 2018

Можно ли получить текст приложения Pages из текущей позиции курсора?Мое требование таково, что когда пользователь вводит что-то в «Страницы», я должен показывать подсказки для слова, которое они вводят.

, поэтому я хочу узнать текущее или последнее слово, рядом с текущей позицией курсора из «»Страницы "приложение.Либо с помощью AppleScript или специальных возможностей?Текст не выделен.Я не ищу "Услуги" также.Для приложений, отличных от «Страниц», я использовал Accessibility и appleScript.но для страниц я не нахожу никакого способа.

Я также попробовал ниже AppleScript, но по какой-то причине он отлично работает в «Редакторе скриптов», но когда я использую его в своем коде, он идет в бесконечный цикл.

tell application "Pages"
    activate
end tell
tell application "System Events"
    tell application "System Events"
        key code 123 using {shift down, command down} -- shift-command-left
    end tell
    tell process "Pages"
        keystroke "c" using {command down}
        delay 1
        tell application "System Events"
            key code 124 -- shift-command-left
        end tell
        set myData to (the clipboard) as text
        return myData
    end tell
end tell

Если я запускаю этот AppleScript в своем приложении, он только замораживает мой Mac, я вынужден выйти из Mac, чтобы остановить его.

1 Ответ

0 голосов
/ 26 декабря 2018

Это работает для меня, используя последние версии MacOS Mojave и Pages

property theApp : "Pages" -- change value to name of any other application (TextEdit)

tell application theApp to activate
delay 3
tell application "System Events"
    tell application process theApp
        -- Move the insertion point to the beginning of the previous word.
        key code 123 using {option down} -- left arrow key while holding option down
        delay 0.2
        -- Move the insertion point to the end of the next word. (selects the word)
        key code 124 using {shift down, option down} -- right arrow key while holding option and shift down
        delay 0.2
        keystroke "c" using {command down} -- copies selected wprd 
        delay 0.2
        -- Next 2 key code commands attempt to restore cursor location  
        key code 124 using {option down} -- right arrow key while holding option down
        delay 0.2
        key code 123 using {option down} -- left arrow key while holding option down
        tell current application to set myData to (the clipboard) as text
        delay 4
        return myData
    end tell
end tell
...