我想获取当前活动应用程序的属性。我了解使用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/