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

2024-03-15

在 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 的经过身份验证的保存帮助程序脚本(适用于应用程序的 MAS 版本)使用“具有管理员权限”的密码对话框。但它在优胜美地得到了正确的聚焦。本机应用程序对 applescript 的调用与应用程序执行此操作的 Applescripttell 命令之间有什么不同吗?

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 有点太复杂/令人畏惧,她想要一个交钥匙解决方案。如果有兴趣的话我可以发布整个脚本。在 10.9 下工作正常,但在 10.10 中密码问题的焦点很烦人。


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

祝你好运。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何确保 OS X 10.10 (Yosemite) 中的 Applescript 对话框焦点? 的相关文章

随机推荐

  • NHibernate 如何查询 IList 属性?

    我正在尝试使用 NHibernate 查询我的域类之一上的 IList 属性 这是一个简单的例子来演示 public class Demo public Demo this Tags new List
  • LinkedIn 成功授权 Iphone 接口

    我在 iPhone 应用程序中使用 LinkedIn iOS SDK 并使用 oAuth 已成功集成 但登录后会进入成功授权屏幕 如图所示 我有 2 个问题 UIWebView 显示像缩放一样的界面 不完全缩放它无法正确显示 从左侧剪切一些
  • 如何在 Scala 2.8 注释中指定静态数组?

    我一直在使用 Hibernate Annotations 3 4 0 在 Scala 2 8 0 中构建一些带注释的域类 它工作得很好 除了某些注释需要数组作为参数 例如 下面是我想在 Scala 中表达的 Java 注释 OneToMan
  • 硒NoSuchMethodError

    我正在编写一个自动化测试框架 并且已经写了很多 但是 我遇到了一个似乎无法修复或找到解决方案的错误 当 selenium 尝试回答日期问题并从日期下拉菜单中进行选择时 就会出现问题 我已经完成了很多次 没有任何问题 但由于某种原因 我收到了
  • 将理论插件与求解器结合使用

    最新版本Z3 http z3 codeplex com解耦了以下概念Z3 context and Z3 solver The API http research microsoft com en us um redmond projects
  • 更改 NetBeans 使用的 Maven 存储库

    我正在使用 Ubuntu 并且我已经在 usr share maven 中安装了 Maven 并且我安装的项目进入位于 root m2 repository 的存储库中 然后我安装了 NetBeans 它在 NetBeans java ma
  • Android源码没有main方法怎么还能运行呢?

    我现在已经在一些教程中看到了这一点 但是 Android 源代码到底如何能够没有 main 方法并且仍然可以运行 例如 来自http developer android com guide tutorials hello world htm
  • 是否有可能在不更改 HOST 上的内容的情况下从 GUEST 工作站获取 VMWARE HOST 计算机名称? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 假设我有 VMWARE 工作站 来宾 Windows 并由 Windows 托管 有没有可能的方法来接收托管计算机的主机名 并且无需更改主
  • ngValue 返回索引和值

    使用 ngValue 从选择返回的值是索引和值的串联 如果我用这个
  • 我试图在视图控制器之间传递数据,但 16 个变量中只有一半传递? [复制]

    这个问题在这里已经有答案了 本质上 我试图将 16 个不同的变量从一个视图控制器传递到另一个视图控制器 但只传递最后 8 个对手变量 我不确定我做错了什么 或者为什么只有那 8 个 有共同的 对手 被通过 我是 XCode 新手 所以任何可
  • 生成脚手架 ConnectionFactory 时出错

    我有一个名为 Applicant 的简单课程 我正在尝试使用实体框架添加一个模板控制器 并将 Applicant 作为我的模型类 以及一个新的数据上下文 每次我尝试创建控制器时 都会收到一个错误对话框 其中显示 无法检索 MyNameSpa
  • Internet Explorer 7 中的 @font-face 问题

    我的一个网站的 font squirrel 生成 font face 代码有问题 该字体在 Internet Explorer 7 中不显示 在其他浏览器中它工作得很好 地址是 http www mrsherskin com http ww
  • 使用 pandas 和 matplotlib 绘图

    我正在尝试用 Python 创建散点图 我有一个具有指定类别的数据框 df x 和 y 是列号 groups df groupby category fig ax plt subplots for name group in groups
  • Google + iPhone API 无需离开应用程序即可登录和共享

    我最近在我的应用程序中集成了 Google API 这很容易 我唯一的问题是 一切都需要您离开应用程序然后再回来 它使用 URL 方案 这不是我想要的行为 有没有办法直接调用他们的服务 并像在 LinkedIn API 中一样对响应执行任何
  • 太多的子进程 fork() [重复]

    这个问题在这里已经有答案了 代码 for ii 0 ii lt 24 ii switch fork case 1 printf n nproblem with fork n n exit 0 case 0 WriteOnShared Mem
  • 是否可以以有限的权限安装到程序文件中?

    我有一个将作为 MSI 包部署的应用程序 在 WiX 中编写 我正在决定是否指定elevated or limited安装程序所需的权限 除了位于 Program Files 下的默认安装位置之外 该应用程序不包含任何需要提升权限的内容 现
  • electro-forge如何指定打包的源目录?

    我已经操纵了创建反应应用程序与电子锻造app 现在我需要以某种方式指定从 CRA 生成的构建文件夹用于打包 该文件夹也应该被提供 电子锻造可以实现这样的事情吗 我知道您是在问如何告诉 electro forge 在哪个目录中找到源文件来打包
  • 无法在 FireFox 中更改 HTML5 音频标记的音量

    在本页http www metrovancouver org services solidwaste Holiday Pages Song aspx http www metrovancouver org services solidwas
  • XNA 媒体播放器快进/快退

    使用 XNA 4 0 我当前正在使用以下命令播放用户 PC XBox360 上的歌曲 Microsoft Xna Framework Media MediaPlayer Play Song song 我看到媒体播放器有一个静态属性比赛位置正
  • 如何确保 OS X 10.10 (Yosemite) 中的 Applescript 对话框焦点?

    在 OS X 10 10 Yosemite 之前 我可以通过告诉 当前应用程序 激活来确保 applescript 对话框获得焦点 tell current application activate set output to do she