gpt4 book ai didi

objective-c - 没有 sdef 的 ScriptingBridge? ( cocoa )

转载 作者:行者123 更新时间:2023-12-03 17:23:14 24 4
gpt4 key购买 nike

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

访问系统首选项的示例:

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

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

谢谢。

最佳答案

我假设您想运行一个 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);

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com