如何判断菜单项是否已“检查”?

时间:2009-10-12 03:46:05

标签: macos applescript

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

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

我的问题是速度限制(海龟)模式与打开/关闭它的键相同。如果有人手动触摸速度限制,它将不同步,并且当控制台上线时实际上会关闭速度限制。此外,如果一个控制台上线,速度限制将开启,但如果另一个控制台启动,则限制将被关闭。

当速度限制激活时,菜单项变为“已检查”,但我不知道如何测试。在Applecript字典中没有任何关于传输应用程序的内容。

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

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

2 个答案:

答案 0 :(得分:4)

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

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

答案 1 :(得分:0)

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

在具有服务质量控制的路由器上投资40-50美元将更有意义,这将允许您通过端口或设备确定网络流量的优先级。