Arhn - архитектура программирования

Получить текст из текущей позиции курсора Из приложения Pages на Mac

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

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

Это работает для меня, используя последние версии 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
26.12.2018
  • Я все еще сталкиваюсь с той же проблемой. когда я запускаю этот AppleScript в своем проекте, он переходит в бесконечный цикл и зависает Mac, мне приходится принудительно выключать его, чтобы остановить его. Я вызываю этот appleScript на NSEvent.addGlobalMonitorForEvents, так что, когда пользователь что-то набирает, я получаю последние слова из позиции курсора. 27.12.2018
  • @KrishnaMaru это поможет нам помочь вам, если вы предоставите эту информацию в вопросе. Ваш блок монитора запускается нажатием клавиш из AppleScript. 27.12.2018
  • @KrishnaMaru обновил код в моем посте. Новая версия работает лучше для вас? 29.12.2018
  • @ wch1zpink, нашел проблему. Я вызываю этот AppleScript на NSEvent.addGlobalMonitorForEvents(соответствие: .keyDown), поэтому в первый раз он запустит appleScript, но опять же в нашем appleScript у нас есть событие keyDown 124/123, которое заставит этот AppleScript работать в бесконечном цикле. 03.01.2019
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..