我试图通过使用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}";
还有其他方法可以做到吗?任何帮助将不胜感激。
答案 0 :(得分:2)
这不适用于所有应用程序,因为NSUserDefaults
中指定的应用程序必须具有AppleScript词典,并且该词典必须包含命令,属性和类。
许多应用程序根本无法编写脚本,并且几乎所有应用程序都不了解create range
和highlight color index
。
该错误是编译错误。
从ObjC的角度来看,切勿将valueForKey:
与NSUserDefaults
一起使用,除非您可以解释为什么在这种情况下明确需要KVC。有stringForKey:
个对象,id
个对象是objectForKey: