2015-04-01 5 views
0

Я хочу использовать AppleScript для переноса приложения на передний план. Если я запустил следующий сценарийПринесите приложение на передний план ID

tell application "System Events" 
    tell process id 916 
    activate 
    end tell 
end tell 

процесс не выходит на передний план. Вместо этого только активное окно в настоящее время переднего большинства приложений теряет фокус, но это приложение остается впереди.

Возможно ли это сделать с идентификатором процесса, а не с именем приложения? Я пробовал это в Mac OS X 10.6.8 и 10.7.5.

Я ищу простой AppleScript-решение. Он не должен использовать никаких команд оболочки или любого другого решения. Я хочу использовать идентификатор процесса, потому что у меня может быть несколько экземпляров одного и того же приложения (в том же месте файла).

+1

Ну, я дал ответ, но он включал 'сделать команду оболочки script'. Я забыл увидеть последнюю часть. На данный момент вы действительно должны рассматривать 'make shell script' как 'plain Applescript'. Но я не хотел навлечь ваш гнев, поэтому я удалил свой ответ. – CRGreen

ответ

1

Я нашел следующее решение:

tell application "System Events" 
    set myProcesses to every process whose unix id is myPocessID 
    repeat with myProcess in myProcesses 
     set the frontmost of myProcess to true 
    end repeat 
end tell 

ответ Foo работает слишком:

tell application "System Events" 
    set frontmost of every process whose unix id is myProcessID to true 
end tell 
+0

Я не уверен, что цикл повторения действительно необходим. Я не принимаю свой собственный ответ (пока) и буду ждать каких-либо дополнительных предложений. – Mark

+0

да. это головоломка. и, вероятно, его спрашивали раньше. возможно, не с такими ограничениями. – CRGreen

+1

Попробуйте «сообщить приложению« Системные события » , чтобы установить фронт каждого процесса, чей идентификатор unix - это myProcessID для true' – foo

0
set processID to 432--currently firefox for me 
tell application "System Events" to set a to file of 1st item of (processes whose unix id = processID) 
activate application (a as alias as string) 

Это использует путь к файлу приложения, который, по-видимому, необходим (а не только имя). У меня есть другой ответ, который использует do shell script; Я мог бы добавить это, если хочешь.

+0

Спасибо, что посмотрели. У меня есть процесс, из которого я могу запускать несколько экземпляров, все из которых имеют один и тот же путь приложения. Поэтому я думаю, что это решение не сработает, но я буду использовать его как вдохновение. – Mark

+1

А, да, вы должны были упомянуть о части нескольких экземпляров. это важно; вероятно, вы должны добавить это к своему вопросу. – CRGreen

Смежные вопросы