Избавьтесь от диалога «Выбор приложения», когда приложение не может быть найдено в AppleScript - PullRequest
0 голосов
/ 08 июня 2011

Мне нужно избавиться от этого раздражающего диалога.Как мне этого добиться?

Я пытаюсь получить заголовок окна активного приложения.Иногда есть приложения, у которых есть допустимое имя приложения, но когда я пытаюсь вставить его в скрипт AppleScript (для получения заголовка окна), появляется это диалоговое окно.Мне нужно просто игнорировать эти приложения, не мешая конечному пользователю с этим диалоговым окном.

Заранее спасибо!

1 Ответ

2 голосов
/ 08 июня 2011

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

set bundleName to "com.apple.TextEdit"

-- find out if the application is running
set appIsRunning to false
tell application "System Events"
    try
        first process whose bundle identifier is bundleName
        set appIsRunning to true
    end try
end tell

if appIsRunning then
    tell application id bundleName
        -- do something
    end tell
end if

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

try
    tell application "Finder" to set bundleID to id of (choose file)
on error
    return "The chosen file is not an application"
end try
return bundleID

Наконец, я не уверен, что это поможет решить вашу проблему,Если в вашем коде есть строка «сказать приложению что угодно», а у пользователя нет приложения в своей системе, то, скорее всего, диалог запустится в любом случае.Именно так всегда работал яблочный скрипт.Apple пыталась решить эту проблему, и большинство программ больше не отображают окно «найти приложение», хотя некоторые все еще показывают.iPhoto - один из примеров, который я заметил.

Это происходит, когда вы распространяете свой код как скрипт, потому что, когда скрипт открывается, он должен сам компилироваться.На этапе компиляции яблочный скрипт должен убедиться, что код правильный, и, следовательно, для проверки кода должен быть проверен словарь яблочного скрипта приложения ... что означает, что иногда приложение должно быть запущено.Однако есть одно возможное решение.Вы должны поставить свой предварительно скомпилированный скрипт, что означает, что вы должны распространять его как приложение, а не как скрипт.Кроме того, вы должны использовать следующую конструкцию в приложении.Другими словами, вы предварительно скомпилируете сценарий на своем компьютере с помощью материала «используя термины из», чтобы пользователю не приходилось проверять словарь приложения при его запуске.

set appName to "TextEdit"

using terms from application "TextEdit"
    tell application appName
        -- do something
    end tell
end using terms from
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...