gpt4 book ai didi

applescript - 如何确保 OS X 10.10 (Yosemite) 中的 Applescript 对话框焦点?

转载 作者:行者123 更新时间:2023-12-01 06:27:53 25 4
gpt4 key购买 nike

在 OS X 10.10 (Yosemite) 之前,我可以通过告诉“当前应用程序”激活来确保 Applescript 对话框具有焦点:

tell current application
activate
set output to (do shell script "printf '" & hostsLine & commentString & "' >> /private/etc/hosts" with administrator privileges)
end tell

这会将密码对话框置于最前面以供输入。该对话框不再以焦点显示在 Yosemite 中,您必须先单击它,然后才能输入。

在堆栈交换和其他地方搜索没有提供任何解决方案/变通方法。

有没有人有在 OS X 10.10 中工作的方法?

更新 1:万一其他人遇到此问题,这似乎是一个新的沙盒问题。非密码对话框正确获得焦点。实际上,“具有管理员权限”密码对话框之前的非密码对话框会导致密码对话框也有焦点。我添加了一个对话框来确认 Safari 在测试时仍然是前端应用程序并发现了这一点。作为一种解决方法,我添加了一个超时为 1(秒)的前面的对话框,直到找到更好的解决方案。
tell me -- alternate method: tell current application
activate
display dialog "Trying to get focus…" with title "Can't focus in Yosemite" buttons {"Cancel", "Idle"} cancel button "Cancel" giving up after (1)
set output to (do shell script "printf '" & hostsLine & commentString & "' >> /etc/hosts" with administrator privileges)
end tell

有趣的是,BBedit 的 Authenticated Save helper 脚本(用于应用程序的 MAS 版本)使用“具有管理员权限”密码对话框。但它在优胜美地得到了正确的聚焦。本地应用程序调用 applescript 与应用程序的 Applescript tell 命令之间有什么不同?
on documentShouldFinalizeAuthenticatedSave(theDocument, tempFilePath, destinationPath)

-- on input: tempFilePath points to the contents of the document written to a temp file, ready to move to the destination; destinationPath is where the file should be copied.

-- on exit: if the operation succeeded, delete the temp file (or else the application will assume the operation failed) and return YES for success

-- this is pretty straightforward: "cp tmpFilePath destinationPath"

do shell script "cp" & " " & quoted form of tempFilePath & " " & quoted form of destinationPath with administrator privileges

-- now remove the temp file, this indicates to the application that we did the work

do shell script "rm" & " " & quoted form of tempFilePath

return true
end documentShouldFinalizeAuthenticatedSave

更新 2:如果有人好奇,我妻子的 Safari 助手脚本的这一部分可以阻止垃圾邮件弹出广告网站,例如 mackeeper.zeobit.com 具有模式对话框。编辑/etc/hosts 有点过于复杂/令人生畏,她想要一个交 key 解决方案。如果有兴趣,我可以发布整个脚本。它在 10.9 下工作正常,但密码问题的焦点在 10.10 中很烦人。

最佳答案

你可以试试...告诉我而不是告诉当前的应用程序。 “告诉我”基本上是告诉applescript 激活并运行“do shell script”命令。这更有意义。 “do shell script”是一个applescript命令,所以让applescript运行它是有意义的。也许这将有助于解决您的问题。

祝你好运。

关于applescript - 如何确保 OS X 10.10 (Yosemite) 中的 Applescript 对话框焦点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26207035/

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