我需要从我的代码中运行AppleScript以获得LoginItems名称。我可以通过Xcode项目来完成它。但是当我对Xamarin做同样的事情时,它就失败了。
我在Xamarin项目中少了什么?任何帮助,以获得登录项目,将不胜感激。
Xcode项目代码:
NSString *script = @"tell application \"System Events\" to get the path of every login item";
NSAppleScript *appleScript = [[NSAppleScript alloc] initWithSource:script];
NSDictionary* errorDict;
NSAppleEventDescriptor *descriptor = [appleScript executeAndReturnError: &errorDict];
Xcode项目plist值:
最后一个值:
我在Xamarin做了类似的事情:
var script = "tell application \"System Events\" to get the path of every login item";
var appleScript = new NSAppleScript(script);
var descriptor = appleScript.ExecuteAndReturnError(out var errorInfo);
The info.plist
我得到的errorInfo
值是:
{{
NSAppleScriptErrorAppName = "System Events";
NSAppleScriptErrorBriefMessage = "Not authorized to send Apple events to System Events.";
NSAppleScriptErrorMessage = "Not authorized to send Apple events to System Events.";
NSAppleScriptErrorNumber = "-1743";
NSAppleScriptErrorRange = "NSRange: {44, 4}";
}}
但是不应该发生这种情况,因为我在plist中添加了Privacy
部分。
发布于 2019-05-16 11:11:36
获取错误消息/号码,并具有正确的Info.plist条目:
<key>NSAppleEventsUsageDescription</key>
<string>StackOverflow needs access to your System Events </string>
注意事项:您应该通过编辑编辑器和vs IDE对Info.plist
文件进行二次检查,以确保正确定义了NSAppleEventsUsageDescription
键,如上面所示。
意味着您是而不是,获取安全弹出以授予权限。
这意味着用户在最初请求时拒绝了权限访问。
打开:
System Preferences / Security & Privacy / Privacy Tab / Automation
找到您的应用程序列表并手动授予它权限:
注意:我一直通过macOS使用AppleScript来实现Xamarin.Mac自动化,所以我知道Xamarin不是问题所在。如果原来它不是自动化权限被拒绝,我想知道这个问题,因为这是我见过的唯一一个问题(我所有的代码,5+年,检查这个错误,并指示用户手动纠正问题,因为他们第一次被要求拒绝访问)。
https://stackoverflow.com/questions/56166380
复制相似问题