gpt4 book ai didi

objective-c - 为什么 AppleScript "tell"命令在后台运行 GUI 应用程序的非 GUI 实例?

转载 作者:行者123 更新时间:2023-12-03 17:45:36 26 4
gpt4 key购买 nike

我正在编写一个标准的 Cocoa 应用程序,并且刚刚开始为其实现 AppleScript 支持。我已经为我的顶级应用程序脚本类定义并实现了一个名为 testprop 的属性,并且访问它效果很好:如果我启动应用程序的实例并在脚本编辑器中运行以下 AppleScript,我得到了我期望的输出:

tell application "MyApp"
testprop
end tell

但是,如果我在脚本编辑器中运行这个完全相同的 AppleScript,当我的应用程序未运行时,它会返回该属性的最后一个已知值,并继续返回该值以供后续调用。我在 GUI 中的任何地方都没有看到我的应用程序实例启动。

注意到这一点后,我在 shell 中运行了 "ps xawww | grep MyApp",这告诉我已经使用我的应用程序的主可执行文件创建了一个进程,其参数类似于this: -psn_0_323663 (每次启动此进程时,末尾的数字都会发生变化 - 我认为这是 AppleScript(以及其他)用来跟踪和控制进程的“进程序列号” )。

这是怎么回事?如何防止这种情况发生(即,当运行 AppleScript“tell”命令时,将我的应用程序作为完整、正确的启用 GUI 的实例启动)?

编辑:

以上似乎只发生在我的笔记本电脑上。当我在 Mac Mini 上尝试完全相同的操作时(两者的操作系统版本相同:10.5.8),我只是收到一条错误消息:

$ osascript -e "tell application \"MyApp\"" -e "testprop" -e "end tell"
26:40: execution error: The variable testprop is not defined. (-2753)

最佳答案

我不认为它正在运行“非 GUI”实例,它只是隐藏了应用程序。您可以将“activate”行添加到 applescript 中以使应用程序变为事件状态,在这种情况下您将看到窗口和菜单。

关于objective-c - 为什么 AppleScript "tell"命令在后台运行 GUI 应用程序的非 GUI 实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1323658/

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