Проблема со вставкой - PullRequest
       3

Проблема со вставкой

2 голосов
/ 27 сентября 2011

Я пытаюсь написать яблочный скрипт для поиска Sparrow (почтовый клиент для Mac)

Вот скрипт:

 on run argv

    tell application "Sparrow"
        activate
    end tell

    tell application "System Events"
        key code 3 using {option down, command down}
        keystroke argv
    end tell
end run

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

1 Ответ

2 голосов
/ 28 сентября 2011
  1. argv всегда инициализируется в список.
  2. Вы не можете нажимать клавишу списка (сначала нужно привести каждый элемент к строке).
  3. Выникогда не может указать точное количество параметров, которые будут отправлены в сценарий, поэтому лучше будет перебрать список и выполнить все, что нужно, как показано ниже:

    tell application "System Events"
        tell process "Sparrow"
            key code 3 using {command down, option down}
            repeat with this_item in argv
                keystroke (this_item as string)
            end repeat
        end tell
    end tell
    

@ Runar

  1. Сценарий подразумевает, что Воробей уже активирован.
  2. Вы не можете сделать это как написано (результат every text item of argv это еще список).Тем не менее, если вы приведете результат в строку, это сработает, но при этом все будет сведено вместе (если AppleScript's text item delimiters равно "").Если вы set AppleScript's text item delimiters to space, то это на самом деле будет лучше, чем предыдущий сценарий ...

    on run argv
        tell application "Sparrow" to activate
        tell application "System Events"
            tell process "Sparrow" --implying Sparrow is already activated
                set prevTIDs to AppleScript's text item delimiters
                key code 3 using {command down, option down}
                set AppleScript's text item delimiters to space
                keystroke (every text item of argv) as string
                set AppleScript's text item delimiters to prevTIDs
            end tell
        end tell
    end run
    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...