【问题标题】:How to tell if a menu item is 'checked'?如何判断菜单项是否已“选中”?
【发布时间】:2010-07-29 21:46:36
【问题描述】:

我正在构建一个 Applescript,它将每 X 分钟扫描一次我的网络,检查我家的 Xbox360 或 PS3,并在任一控制台在线时启用我的传输 BitTorrent 客户端限速模式。

目前我只能使用 applescript 暂停所有传输或恢复所有传输,因为启动/停止传输有单独的键命令。我希望它进入限速模式,而不是完全停止。

我的问题是限速(乌龟)模式是打开/关闭它的同一个键。如果有人手动触及限速,它将不同步,并且在控制台上线时实际上会关闭限速。另外,如果一个控制台上线,速度限制就会开启,但如果另一个控制台开启,那么限制将被关闭。

当限速激活时,菜单项变为“选中”,但我不知道如何测试。传输应用程序的 AppleScript 字典中没有任何内容。

如何确定 Applescript 中的菜单项是否已“选中”(甚至显示实际的选中标记)?

[编辑:]我目前正在尝试弄清楚如何通过 RPC 打开速度限制,而不是尝试使用 GUI 或键盘命令编写脚本,因为开发人员不提供任何 applescript 访问权限。 http://trac.transmissionbt.com/browser/trunk/doc/rpc-spec.txt

【问题讨论】:

    标签: macos applescript


    【解决方案1】:

    我遇到了完全相同的问题,最后想出了如何检查传输的速度限制菜单项是否被选中(您可以轻松地修改它以检查其他应用程序中的菜单项)。这已经死了快一年了,但希望这会有所帮助。

    tell application "Transmission" to activate
    
    tell application "System Events"
        tell process "Transmission"
            set speedLimitCurrentlyOn to (value of attribute "AXMenuItemMarkChar" of menu item "Speed Limit" of menu "Transfers" of menu bar 1 as string) ≠ ""
    
            display dialog "Speed Limit On: " & speedLimitCurrentlyOn
        end tell
    end tell
    

    PS: 我在这里从 AppleScript 改编了这个:http://mac.softpedia.com/progDownload/Transmission-Auto-Speed-Limit-Download-60275.html

    【讨论】:

    【解决方案2】:

    您可以通过 AppleScript 从任何给定应用程序中获得哪些信息完全取决于该应用程序的开发人员。如果传输没有为您定义任何方式来确定此状态,那么您将无法以任何程度的可靠性这样做。

    投资 40 至 50 美元购买具有服务质量控制功能的路由器会更有意义,该路由器可让您按端口或设备确定网络流量的优先级。

    【讨论】:

    • 不幸的是,我们有一个相当新的路由器 (D-Link DIR-615 802.11n/g),并且 QoS 工作得不够好。也没有真正的配置选项,只是打开还是关闭,以及您的上行速度。
    • 不幸的是,这里真的没有任何第三种选择,除非您打算将所有窗口永远留在一个地方,在这种情况下,您可能能够通过 GUI 脚本一起破解某些东西。 macosxautomation.com/applescript/uiscripting/index.html 否则,您可以用 AppleScript 做什么和不能做什么是您无法控制的。向 Transmission 的开发人员提交功能请求。
    • 我目前修改后的行动计划是使用 RPC 来控制来自 Applescript 的传输,但我目前遇到了一个我需要弄清楚的“传输错误”。我也不反对在 python 中编写这个,乍一看使用 Applescript 编写似乎更简单。另外,我只是想比以前更深入地尝试 AScript。
    • 这仍然让您受制于应用程序的开发人员。您在这方面花费的时间几乎肯定不值得用 Tomato 闪现的 WRT54GL 的成本,但祝您好运。
    • 是的,我“仍然任由开发者摆布”,但不同的是,RPC 得到完全支持并被开发者推荐使用,他们甚至为它创建了完整的 API 文档。 trac.transmissionbt.com/browser/trunk/doc/rpc-spec.txt

      我花在这个问题上的时间都是学习经验的一部分,这主要是关于这个的。我本可以很容易地坚持使用刚刚执行 START/STOP 的第一个版本,但它总是关于改进你的代码和重构,不是吗?
      感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-19
    • 2011-05-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多