Как определить, отмечен ли пункт меню? - PullRequest
4 голосов
/ 12 октября 2009

Я создаю Applescript, который будет сканировать мою сеть каждые X минут, проверять наличие Xbox360 или PS3 в моем доме и включать мой режим ограничения скорости BitTorrent клиента Transmission, когда любая из консолей подключена к сети.

В настоящее время я могу только приостановить все передачи или возобновить все передачи, используя applecript, так как есть отдельные команды клавиш для запуска / остановки передачи. Я хочу, чтобы он перешел в режим ограничения скорости, но не остановился полностью.

Моя проблема в том, что режим ограничения скорости (черепаха) - это та же клавиша, чтобы включить / выключить ее. Если кто-нибудь коснется ограничения скорости вручную, оно будет не синхронизировано и фактически отключит ограничение скорости, когда консоли подключатся к сети. Также, если одна консоль подключается к сети, включается ограничение скорости, но затем, если включается другая консоль, ограничение отключается.

Пункт меню становится «проверенным», когда ограничение скорости активно, но я не знаю, как это проверить. В словаре яблочного сценария для приложения передачи ничего не было.

Как я могу определить, является ли пункт меню «отмеченным» (даже показывает фактическую галочку) в Applescript?

[Edit:] В настоящее время я пытаюсь выяснить, как включить ограничение скорости с помощью RPC, а не пытаться писать его с помощью графического интерфейса пользователя или ключевых команд, так как разработчики не предоставляют никакого доступа к appleScript. http://trac.transmissionbt.com/browser/trunk/doc/rpc-spec.txt

Ответы [ 2 ]

4 голосов
/ 29 июля 2010

У меня возникла точно такая же проблема, и, наконец, я выяснил, как проверить, отмечен ли пункт меню Transmission Speed ​​Limit (и вы можете легко изменить это, чтобы проверять пункты меню в других приложениях). Это было мертвым уже почти год, но, надеюсь, это поможет.

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

0 голосов
/ 12 октября 2009

Какая информация, которую вы можете получить из любого приложения через AppleScript, полностью зависит от разработчика приложения. Если Transmission не определит для вас способ определения этого состояния, то вы не сможете сделать это с какой-либо степенью надежности.

Было бы гораздо разумнее инвестировать 40–50 долларов в маршрутизатор с контролем качества обслуживания, который позволил бы вам расставить приоритеты в сетевом трафике по порту или устройству.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...