1

我想获取当前活动应用程序的属性。我知道这应该可以通过 ScriptingBridge 实现,但是,这似乎需要您生成一个 sdef 文件并将其导入您的项目中以用于您尝试定位的应用程序。由于我想针对所有应用程序,还有其他方法可以做到这一点吗?

访问系统首选项的示例:

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

如果有其他方法可以访问任何活动应用程序的属性,请分享。(例如;窗口标题)

谢谢。

4

2 回答 2

0

您可以使用以下命令获取每个当前正在运行的应用程序的列表

NSWorkSpace.sharedWorkspace.runningApplications;

该数组中的每个对象都应该是一个NSRunningApplication,您可以自由地查询和操作它。

于 2013-02-16T22:13:26.527 回答
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);
于 2013-02-17T00:36:24.500 回答