我想获取当前有效应用的属性。我知道这应该可以使用ScriptingBridge,但是,这似乎要求您生成一个sdef文件并将其导入到您尝试定位的应用程序的项目中。由于我想定位所有应用,是否有其他方法可以做到这一点?
访问系统首选项的示例:
SystemPreferencesApplication *systemPreferences =
[SBApplication
applicationWithBundleIdentifier:@"com.apple.systempreferences"];
如果有其他方法可以访问任何有效应用的属性,请分享。 (例如;窗口标题)
感谢。
答案 0 :(得分:0)
您可以使用
获取每个当前正在运行的应用程序的列表NSWorkSpace.sharedWorkspace.runningApplications;
该数组中的每个对象都应该是NSRunningApplication,您可以自由查询和操作。
答案 1 :(得分:0)
我假设你想要运行一个AppleScript。如果要运行很多AppleScript代码,那么脚本桥很好。但是,如果你只有少量,那么使用NSApplescript就更简单了。
例如,如果你想运行这个AppleScript ...
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);