Ошибка синтаксиса 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