Создайте AppleScript для добавления принтеров

Я обыскал все уголки Интернета, в том числе мои связи, но никто ничего не знает о событиях нажатия клавиш в AppleScript.

То, что я пытаюсь выполнить, — это AppleScript, который добавляет принтеры, сначала запрашивая переменные, такие как IP-адрес и местоположение принтера, затем сценарий открывает приложение AddPrinter, которое существует на всех компьютерах Mac, и затем сценарий используйте смоделированные нажатия клавиш для ввода всех ранее установленных переменных в поля и нажмите «Добавить», чтобы добавить принтер.

Это должно выглядеть примерно так:

set ip_address to text returned of (display dialog "Enter Printer Ip Adress" default answer "" buttons {"OK"} default button 1)

set printer_name to text returned of (display dialog "Enter Name of Printer" default answer "" buttons {"OK"} default button 1)

set printer_location to text returned of (display dialog "Enter Location of Printer" default answer "" buttons {"OK"} default button 1)

tell application "AddPrinter" to activate

tell application "System Events"

    tell process "AddPrinter"

        tell window 1 -- or “window 1”

            click button "IP" of toolbar 1 -- or “button 3”

            tell combo box 2 of group 2 of group 1

                keystroke ip_address

            end tell

            delay 1

            tell group 1 of group 1

                set value of text field 1 to printer_name

                set value of text field 2 to printer_location

                -- you can't use the reserved word “location”

            end tell

        end tell

    end tell

end tell

person Michael Sanders    schedule 27.03.2014    source источник


Ответы (1)


Если вы замените весь блок tell application "System Events" на

do shell script "lpadmin -p " & ¬
    quoted form of printer_name & ¬
    " -L " & quoted form of printer_location & ¬
    " -E -v " & quoted form of ("lpd://" & ip_address) & ¬
    " -P " & "/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/PrintCore.framework/Versions/A/Resources/Generic.ppd"

под Mavericks это должно работать.

person Michele Percich    schedule 28.03.2014
comment
+1, но путь *.ppd, вероятно, должен быть /System/Library/Frameworks/ApplicationServices.framework/Frameworks/PrintCore.framework/Resources/Generic.ppd, чтобы избежать ссылок на конкретные версии фреймворка (A). - person mklement0; 29.03.2014
comment
да, но как я могу сделать яблочный скрипт, чтобы сделать вышеперечисленное, используя заданные переменные - person Michael Sanders; 31.03.2014
comment
Я уже ответил выше: у вас в коде есть блок Tell Application System Events, замените его инструкцией do shell script, о которой я упоминал. Оставьте инструкции по установке переменных там, где они сейчас, добавьте сценарий оболочки do и удалите и сообщите блок системных событий приложения. - person Michele Percich; 31.03.2014
comment
Спасибо большое было очень полезно - person Michael Sanders; 01.04.2014
comment
Пожалуйста, Михаил. Вы должны принять ответ (с зеленой галочкой), так он поможет и другим найти правильный ответ. - person Michele Percich; 01.04.2014