我想获取当前活动应用程序的属性。我了解使用ScriptingBridge应该可以实现,但是,这似乎需要您生成一个sdef文件,并将其导入到您要定位的应用程序的项目中。由于我要定位所有应用,因此还有另一种方法吗?

访问系统偏好设置的示例:

    SystemPreferencesApplication *systemPreferences =
[SBApplication
 applicationWithBundleIdentifier:@"com.apple.systempreferences"];


如果还有另一种访问任何活动应用程序属性的方法,请共享。 (例如;窗口标题)

谢谢。

最佳答案

我假设您想运行一个applescript。如果您要运行许多applescript代码,那么脚本桥是不错的选择。但是,如果您的数量很少,那么使用NSApplescript是一种更简单的方法。

例如,如果您想运行此小程序...

tell application "System Events"
    set theProcesses to processes
    repeat with aProcess in theProcesses
        tell aProcess to get properties
    end repeat
end tell


然后你可以这样写...

NSString* cmd = @"tell application \"System Events\"\nset theProcesses to processes\nrepeat with aProcess in theProcesses\ntell aProcess to get properties\nend repeat\nend tell";
NSAppleScript* theScript = [[NSAppleScript alloc] initWithSource:cmd];
NSDictionary* errorDict = nil;
NSAppleEventDescriptor* result = [theScript executeAndReturnError:&errorDict];
[theScript release];
if (errorDict) {
    NSLog(@"Error:%@ %@", [errorDict valueForKey:@"NSAppleScriptErrorNumber"], [errorDict valueForKey:@"NSAppleScriptErrorMessage"]);
    return;
}

// do something with result
NSLog(@"result: %@", result);

关于objective-c - 没有sdef的ScriptingBridge? ( cocoa ),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14915668/

10-12 00:11