Ошибка синтаксиса AppleScript при работе с элементами пользовательского интерфейса (служба Summary)

Я пытаюсь получить / установить значение из приложения Сводная служба, используя этот код

tell application "SummaryService"
    activate
    delay 0.1
    get value of text area 1 of scroll area 1 of window "Summary" 
end tell

И все, что я делаю (получить или установить), я получаю эту ошибку Error image

(!) Как правило, я хотел бы найти способ запуска приложения Summary с текстом в качестве аргумента (я хочу добавить эту возможность в мое приложение obj-c). Я погуглил некоторое время, и вот что я получаю. Тем не менее он выполняет всю работу за кулисами, предоставляя пользователю только результат преобразования текста и заставляя выполнять некоторую ненужную работу, а я просто хочу запустить приложение по умолчанию. Любая помощь будет оценена!

2 ответа

Решение

Наконец, я не решаю свой вопрос так, как раньше, но я обнаружил, что на github есть много библиотек с открытым исходным кодом, поэтому я использую один

Еще один момент, когда я хочу использовать код, написанный на Swift, в моем проекте Objective-C, это добавить

#import <Reductio/Reductio-Swift.h>

Для контроллера, где я хочу реализовать желаемую функциональность и вызвать

[Reductio summarizeWithText:textToChange compression:compressionValue completion:^(NSArray<NSString *> * _Nonnull result) {}];

Чтобы получить результат.

PS: мне все еще интересно, как открыть SummaryService программно с текстом, который я выбрал.

PS 2: Внезапно я нашел такую ​​функцию, как NSPerformService, которая делает именно то, что я хочу. Поэтому я реализую всю необходимую функциональность следующим образом:

NSString *stringToSetInPb = @"sample text";
NSPasteboard *pb = [NSPasteboard pasteboardWithUniqueName];
[pb declareTypes:[NSArray arrayWithObject:NSStringPboardType] owner:nil];
[pb setString:stringToSetInPb forType:NSStringPboardType];
NSPerformService(@"Summarize", pb);

Так что вопрос официально можно решить!

Системные события могут получать окна, области прокрутки и текстовые области, а SummaryService - нет.

tell application "SummaryService" to activate
delay 0.1
tell application "System Events"
    tell application process "SummaryService"
        get value of text area 1 of scroll area 1 of window "Summary"
    end tell
end tell
Другие вопросы по тегам