我的系统拒绝使用NSAppleScript类关闭/重新启动



我在10.5上使用CFPlugin作为上下文菜单和图标覆盖(与scplugin相同)。对于我的应用程序和finder之间的通信,我使用distributed object。在Contextual menu items文件夹中安装我的插件后,我的系统拒绝重新启动/关闭/注销。在活动监视器中我无法退出finder,只有强制退出才能为finder叫好。在控制台上,我正在使用10.5.8

ERROR | -[ApplicationManager(AppleEventHandling) _tryQuitAllForRequestor:replyEvent:] | _tryQuitAllForRequestor - _vproc_set_global_on_demand returned error -1805620379  

在Finder和我的应用程序之间没有通信的情况下,系统重新启动/关闭/注销都可以正常工作
10.5.4

loginwindow[41]: ERROR | WSActivateApp | SetFrontProcess({0, 7980956}) returned error -600. Unable to activate process.
loginwindow[41]: ERROR | -[ApplicationManager(AppleEventHandling) _tryQuitAllForRequestor:replyEvent:] | _tryQuitAllForRequestor - _vproc_set_global_on_demand returned error -1780878507

有人能帮我吗?

编辑

我的问题解决了。我使用NSAppleScript执行苹果脚本。现在我正在使用NSTask,并且我的系统重新启动/关闭/注销工作正常。谁能给我解释一下原因吗?

NSAppleScript只能从主线程运行,因此主线程在运行时会被阻塞。

不太确定消息的根本原因是什么,但我认为脚本找不到或无法正常运行,然后主线程被阻塞或超时,所有的关闭序列都会被卡住。

相反,NSTask是正确的多线程,因此序列不会被阻止,并且您的计算机将正确关闭。

以下是一些相关链接:

  • http://deusty.blogspot.com/2006/11/nsapplescript-is-slow.html
  • NSTask启动导致崩溃
  • http://www.cocoabuilder.com/archive/cocoa/226818-nsapplescript-returns-wrong-result-on-multiple-safari-windows-applescript-editor-work.html
  • https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSAppleScript_Class/Reference/Reference.html

我的问题解决了。我使用NSAppleScript执行苹果脚本。现在我正在使用NSTask,我的系统重新启动/关闭/注销工作正常。

最新更新