Как я могу вывести окно на передний план, не фокусируя его, используя Applescript в OS X 10.8


9

Я хочу вывести окно (например, QuickTime) на передний план, не фокусируя его . Я могу сделать это в OS X 10.7, используя следующий код в Applescript.

tell application "System Events"
    set visible of process "QuickTime Player" to true
end tell

Это эквивалент Python.

from ScriptingBridge import *
process = SBApplication.applicationWithBundleIdentifier_('com.apple.systemevents').processes().objectWithName_('QuickTime Player')
process.setVisible_(True)

Но это не работает после того, как я обновился до OS X 10.8. Есть ли способ заставить его работать?

Ответы:


12

Если приложение имеет открытые окна, это должно поднимать их над окнами других приложений, но держать их под окнами текущего приложения.

tell application "System Events"
    perform action "AXRaise" of window 1 of process "QuickTime Player"
end tell

Это то, что я хочу. Спасибо. Кстати, где я могу найти документацию действий?
Юсяо Цзэн

1
Справочник по ролям и атрибутам доступности: Действия . Вы можете увидеть, какие элементы пользовательского интерфейса действий поддерживают с помощью actions ofили с помощью инспектора доступности.
Лри

1
AXRaise не разрешен в OS X 10.10 (Yosemite) и 10.11 (El-Capitan), если вы не добавили вызывающее приложение (которое выполняет AppleScript) в раздел «Специальные возможности» вкладки «Конфиденциальность» на вкладке «Безопасность и конфиденциальность» "Панель системных настроек. Это означает, что в первый раз вы попытаетесь это сделать - вам будет представлен системный интерфейс, который предложит вам перейти к предпочтениям. Я не могу использовать это из-за обхода в пользовательском опыте. Есть ли другой способ поднять окно без использования AX (API специальных возможностей) ???
Мотти Шнеор

-1

Итак, из того, что я понял из вашего поста, вы пытаетесь представить приложение, используя Applescript? Если так, то код для этого в Mountain Lion на самом деле довольно прост! Вот:

tell application "Quicktime Player"
activate
end tell

Я надеюсь, что это работает! Если это не то, что вы хотели, дайте мне знать, и я обновлю это для вас. :)


2
Что ж, активировать будет фокус Quicktime, так что это не то, что я хочу. Я имею в виду, что если вы откроете приложение Applescript, наберете свой код и запустите его, фокус окна будет перемещен в Quicktime. В результате вы не можете напечатать любой код, например, прежде чем щелкнуть окно Applescript.
Юсяо Цзэн
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.