0

我正在尝试通过使用 NSAppleScript 通过自定义 Mac 应用程序突出显示任何 Mac 应用程序中的文本。我试过下面的代码,但它不起作用。

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}";

我还有其他方法可以做到这一点吗?任何帮助将不胜感激。

4

1 回答 1

2

这不适用于所有应用程序,因为在 中指定的应用程序NSUserDefaults必须具有 AppleScript 字典,并且该字典必须包含命令、属性和类。

许多应用程序根本无法编写脚本,并且几乎所有应用程序都不理解create rangehighlight color index.

该错误是编译错误。


从 ObjC 的角度来看,除非你能解释为什么在这种情况下明确需要 KVC ,否则永远不要使用valueForKey:with 。NSUserDefaultsstringForKey:和 为id对象objectForKey:

于 2018-10-26T06:51:24.267 回答