NSAppleScript для выделения текста в любом приложении Mac с заданным NSRange - PullRequest
0 голосов
/ 26 октября 2018

Я пытаюсь выделить текст в любом приложении Mac с помощью специального приложения Mac, используя NSAppleScript. Я пробовал приведенный ниже код, но он не работает.

NSAppleScript* scriptObject = [[NSAppleScript alloc] initWithSource:[NSString stringWithFormat:@"\
tell application \"%@\"\n\
activate\n\
end tell\n\
tell application \"%@\"\n\
set theRange to create range start %ld end %ld\n\
set highlight color index of theRange to %@\n\
end tell\n\
",[[NSUserDefaults standardUserDefaults] valueForKey:@"AppName"],[[NSUserDefaults standardUserDefaults] valueForKey:@"AppName"],(unsigned long)range.location, (unsigned long)(range.location+range.length),@"yellow"]];

Но я получаю ошибку ниже:

NSAppleScriptErrorBriefMessage = "Expected end of line but found identifier.";
    NSAppleScriptErrorMessage = "Expected end of line but found identifier.";
    NSAppleScriptErrorNumber = "-2741";
    NSAppleScriptErrorRange = "NSRange: {459, 5}";

Есть ли другой способ сделать это? любая помощь будет оценена.

1 Ответ

0 голосов
/ 26 октября 2018

Это не может работать для всех приложений, потому что приложение, указанное в NSUserDefaults, должно иметь словарь AppleScript, и этот словарь должен содержать команды, свойства и классы.

Многие приложения вообще не являются сценариями, и почти все приложения не понимают create range и highlight color index.

Ошибка - ошибка компиляции.


И с точки зрения ObjC никогда не используйте valueForKey: с NSUserDefaults, если только вы не можете объяснить, почему KVC явно необходим в этом случае. Есть stringForKey: и для id объектов objectForKey:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...